Javascript 适当的承诺链
在将模型绑定到视图之前,我尝试使用一系列请求来构建模型。我很难理解如何利用一个请求的响应来提出下一个请求。我的问题是,我的“担保人”和“管理人”财产作为承诺而不是回应来解决Javascript 适当的承诺链,javascript,promise,Javascript,Promise,在将模型绑定到视图之前,我尝试使用一系列请求来构建模型。我很难理解如何利用一个请求的响应来提出下一个请求。我的问题是,我的“担保人”和“管理人”财产作为承诺而不是回应来解决 如何确保返回数据而不是承诺?在我看来,经理和赞助商的请求可以并行(同时执行) 当在那里时,我会打一个: $.get("/projects/1") .then(function(data){ var manager_req = $.get("/employees/" + data.ProjectManagerId);
如何确保返回数据而不是承诺?在我看来,经理和赞助商的请求可以并行(同时执行) 当在那里时,我会打一个
:
$.get("/projects/1")
.then(function(data){
var manager_req = $.get("/employees/" + data.ProjectManagerId);
var sponsor_req = $.get("/employees/" + data.ProjectSponsorId);
return $.when(data, manager_req, sponsor_req);
})
.then(function(data, manager, sponsor){
data.sponsor = sponsor;
data.manager = manager;
return data;
})
.done(function(data){
//Bind data to view
//data.manager is resolved
//data.sponsor is resolved
});
嵌套when承诺可以更好地处理数据
:
$.get("/projects/1")
.then(function(data){
var manager_req = $.get("/employees/" + data.ProjectManagerId);
var sponsor_req = $.get("/employees/" + data.ProjectSponsorId);
return $.when(manager_req, sponsor_req).then(function(manager, sponsor){
data.sponsor = sponsor;
data.manager = manager;
return data;
});
})
.done(function(data){
//Bind data to view
//data.manager is resolved
//data.sponsor is resolved
});
$。是否在启动请求并等待其完成后再允许返回?这似乎是我丢失的位,尽管我同意并行位。$。get
执行请求<代码>$。当
仅同步两个请求时。它返回一个承诺,当它的所有输入都已解析时,该承诺已解析。如果输入不是承诺(如第一个示例中的数据
),则将其计为解析值。您是否知道这是标记为Q的,但这里没有一个Q承诺?谢谢Ben。我在我的应用程序中使用Q,但最终删除了简化示例中的引用。我会取下标签。
$.get("/projects/1")
.then(function(data){
var manager_req = $.get("/employees/" + data.ProjectManagerId);
var sponsor_req = $.get("/employees/" + data.ProjectSponsorId);
return $.when(manager_req, sponsor_req).then(function(manager, sponsor){
data.sponsor = sponsor;
data.manager = manager;
return data;
});
})
.done(function(data){
//Bind data to view
//data.manager is resolved
//data.sponsor is resolved
});