【问题标题】:What is $.Deferred() and .resolve in jqueryjquery 中的 $.Deferred() 和 .resolve 是什么
【发布时间】:2013-10-02 06:59:45
【问题描述】:

.deferred 究竟是做什么的,它的工作是什么,我们应该在何时何地使用 .deferred 和 resolve。在下面的函数中,我有两个 .done 回调。我想设置两个不同的回调消息。 fiddle

var deferred = $.Deferred();
deferred.done(function(value) {
    alert(value);
}).done(function(id){
alert(id)
});

console.log(deferred)

deferred.resolve("hello world");

【问题讨论】:

  • 只是为了澄清你的问题,你想让两个警报显示不同的信息吗?
  • 是的,我想显示不同的信息,也想了解 .deferred

标签: jquery


【解决方案1】:

jQuery.Deferred是jQuery实现promise模式的主要工具。

这里有几个链接,值得一读:

至于您的具体需求:您应该使用.then()(阅读.done().then() 的文档)。

var deferred = $.Deferred();

deferred.then(function(value) {
    alert(value);
    return 42;
}).then(function(id){
    alert('The answer : ' + id);
});

console.log(deferred)

deferred.resolve("hello world");

fiddle

【讨论】:

    【解决方案2】:

    这会做你想要的吗?

    var deferred = $.Deferred();
    deferred.done(function(value) {
        alert(value[0]);
    }).done(function(value){
        alert(value[1]);
    });
    
    
    deferred.resolve(["hello world", "goodbye, cruel world"]);
    

    【讨论】:

    • 感谢您的回答。我想知道我们可以在不使用 .deferred 的情况下获得相同的结果,所以为什么 .deferred 有用请参阅jsfiddle.net/WLpBB/1
    • 这个答案缺少教育解释。
    猜你喜欢
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2017-12-01
    • 2013-02-11
    • 2017-07-10
    • 2019-01-20
    • 1970-01-01
    相关资源
    最近更新 更多