jquery推迟返回数据的时间

时间:2015-05-23 20:01:01

标签: jquery jquery-deferred

您好我想了解$ .deffered。一旦说计算完成,我该如何返回数据?

function cube(n)
{
//console.log(n);
return n = Math.pow(n, 3);
}

function compute(n){
    var d = $.Deferred();

    n = cube(n);
    //how do i return n upon completed computation?
    return d.promise(n);
}



$.when(compute(5))
    .done(function(data){
        console.log(data);
    });

http://jsfiddle.net/ysfk00bc/

1 个答案:

答案 0 :(得分:1)

问题中的

js似乎没有向jQuery.Deferred()回调处理程序.done()返回值。请参阅deferred.resolve()

jQuery.Deferred()方法resolvereject返回值已解决或拒绝jQuery延迟方法.done.fail.then,{{ 1}}。

尝试将always作为参数传递给n.resolve()的{​​{1}}方法,例如jQuery.Deferred()

不需要在compute中包含d.resolve(n) - 它返回一个jQuery保证 - 因为compute(5)会在$.when()compute返回一个jQuery保证对象

.done()
return d.promise()

或者在function cube(n) { return Math.pow(n, 3); } function compute(n) { var d = new $.Deferred(); n = cube(n); // return jQuery promise `n`: `cube(n)` d.resolve(n); return d.promise(); } compute(5) .done(function(data) { console.log(data); }); compute(2) .done(function(data) { console.log(data); });中使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> </script>,返回jQuery承诺$.when()compute

n
cube(n)