我正在尝试使用Promise延迟功能:
load: function(){
var d = $.Deferred();
$.ajax(......).done(function(resp){
if(resp.error)
return d.reject();
....
return rend();
});
return d.promise();
},
我知道$.ajax
已经返回了一个承诺,但是这里render()
也将返回一个承诺,所以我不能只使用该$.ajax
承诺,因为
load.then(function() { ..... })
应该在rend()完成之后运行。
您知道我如何与rend()
承诺“融合”d
吗?
在这里render()也会返回一个promise,所以我不能只使用$ .ajax promise,因为
load.then(function() { ..... })
应该在rend()完成之后运行。
是的你可以!那就是then
over的力量done
:它链接动作,等待回调(render()
)的结果,然后再解决返回的诺言。
使用
load: function(){
return $.ajax(…).then(function(resp){
// ^^^^
if(resp.error)
return $.Deferred().reject(resp.error);
…
return render();
}); // this will resolve with the result of your render() promise
// (or be rejeced with the .error)
},
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句