【问题标题】:how to setup a deferred on a callback, using jquery? [duplicate]如何使用 jquery 设置延迟回调? [复制]
【发布时间】:2014-12-27 07:47:41
【问题描述】:

由于某种原因,我似乎无法设置延迟。这是我的设置

// some class
find: function () {
    var deferred = $.Deferred();

    Func.run(function (err, results) {
        return results;
    });

    deferred.resolve(results);

    return deferred.promise;
},
test: function () {
    $.when(this.find()).done(function(data){
        console.log(data);
    });
}

我试图打电话给this.find(),但我希望它返回一个承诺...问题是Func.run() 是异步的,所以我也需要等到它完成。

我也在使用backbone.js,那里有不同的方法吗?

任何想法我的代码有什么问题?

【问题讨论】:

  • 您的延迟对象从未解决。将您的解决声明放入Func.run

标签: jquery asynchronous promise jquery-deferred


【解决方案1】:

将您的解决声明放入您的Func.run

find: function () {
    var deferred = $.Deferred();

    clearTimeout(this.timer);
    this.timer = setTimeout(function () {
        return Func.run(function (err, results) {
            deferred.resolve(results);
        });
    }, 1500);

    return deferred.promise();
}

【讨论】:

  • 它确实奏效了。回报需要return deferred.promise();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-09
  • 2019-03-05
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多