我正在尝试创建一个队列,我可以使用deferred包装传入的对象,以便在调用下一个之前使具有Model和Action属性的对象(Action只是一个ajax调用)完成。
var promises = [];
_.each(this.List, (model) => { // List is just an object that has a Model and Action property
var wrapperFunc = (() => {
var deferred = $.Deferred();
model.Action();
deferred.resolve();
promises.push(wrapperFunc);
});
});
问题是,model.Action()只是被调用。我错了吗?
答案 0 :(得分:0)
老问题,但仍然没有答案。
类似于model.Action()的调用不会阻止,除非您在ajax调用中专门将async选项设置为false。 ajax调用将返回一个延迟对象,而不是阻塞。使用jQuery,您可以调用jQuery.when(deferred).then(callback)或deferred.done(callback)。回调是一个在ajax调用完成后运行的函数。
关于延期交易的Stack Overflow快速谷歌应该回答你的很多问题(如果他们还没有得到回答,我知道我将在一年后发布)。