如何使用jquery在回调上设置延迟?

时间:2014-12-27 07:47:42

标签: jquery asynchronous promise jquery-deferred

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

// 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,有不同的方式在那里做。

我的代码有什么问题?

1 个答案:

答案 0 :(得分:0)

将您的解决方案声明放入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();
}