【发布时间】:2015-07-02 04:59:42
【问题描述】:
我有以下设置,我很好奇这是否是正确的方法。它工作正常,但我只是确保我做对了,或者是否有更好的方法来完成相同的任务。
//custom ajax wrapper
var pageLoadPromise = ajax({
url: //call to webmethod
});
//this is the way I have been doing it
pageLoadPromise.done(cB1)
.done(cB2)
.done(cB3)
.done(cB4)
.done(function(){cB5(args);});
//this function requires that cB1 has been completed
//I tried this and it worked as well
pageLoadPromise.done(cB1,cB2,cB3,cB4)
.done(function(){cB5(agrs)});
两种方式都可以,但就像我说的,我想知道这是否是实现此目的的正确方法?
更新:
我对我的代码进行了小幅调整,特别是针对cB1 和对cB5 的回调
pageloadPromise.done(
function(data){
cB1(data).done(function(){
cB5(args);
});
},cB2,cB3,cB4
);
function cB1(data){
var cB1Promise = $.Deferred();
...
cB1Promise.resolve();
return cB1Promise;
}
【问题讨论】:
-
@Asad 没有回调返回任何数据,但我将
data对象传递给前 4 个 callbaks。 -
@Asad:不。
.done不是.then -
@RobM:为什么会有 5 个不同的回调等待相同的数据?
-
@Bergi 前 4 个回调使用从 web 方法返回的不同数据。所以在页面加载时,我正在检索初始化页面所需的大量数据。该数据然后返回到一个
json。在那个实际的回调中,我做了这样的事情:var cb1data= data.d.cb1data;。所以他们并不是都在等待相同的数据。
标签: javascript jquery promise