您好我想了解$ .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);
});
答案 0 :(得分:1)
js
似乎没有向jQuery.Deferred()
回调处理程序.done()
返回值。请参阅deferred.resolve()。
jQuery.Deferred()
方法resolve
,reject
返回值已解决或拒绝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)