-1

有人可以简单地解释一下promise和deferred在查询中的区别吗?

我知道什么是承诺以及何时使用它,但我很难看出与 deferred 有什么区别?

4

1 回答 1

2

Promise 是延迟对象的只读视图,它不允许解析/拒绝延迟,但只允许将处理程序注册到相应的事件。

当一个方法创建一个 deferred 时,您希望该方法能够控制何时必须将其标记为拒绝/已解决,如果您从该方法返回 deferred,那么任何人都可以对该 deferred 对象调用 resolve/reject,而不是 jQuery 提供可以通过调用创建的延迟调用承诺的只读视图,deferred.promise()可以从创建延迟的方法返回,因此其他方法只能注册失败/成功/始终事件的处理程序,但不能更改延迟的状态。

function create(){
    var d = $.Deferred();
    .....
    //we can call resolve/reject using d
    return d.promise();
}

var promise = create();
//we cannot call resolve/reject on this object
promise.done(function(){});
于 2013-11-12T16:10:25.347 回答