包装函数延迟

时间:2014-05-19 14:41:34

标签: javascript jquery typescript

我正在尝试创建一个队列,我可以使用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()只是被调用。我错了吗?

1 个答案:

答案 0 :(得分:0)

老问题,但仍然没有答案。

类似于model.Action()的调用不会阻止,除非您在ajax调用中专门将async选项设置为false。 ajax调用将返回一个延迟对象,而不是阻塞。使用jQuery,您可以调用jQuery.when(deferred).then(callback)或deferred.done(callback)。回调是一个在ajax调用完成后运行的函数。

关于延期交易的Stack Overflow快速谷歌应该回答你的很多问题(如果他们还没有得到回答,我知道我将在一年后发布)。