【问题标题】:How do I use jQuery.Deferred with a plain function?如何将 jQuery.Deferred 与普通函数一起使用?
【发布时间】:2012-12-02 01:22:54
【问题描述】:

Deferred object 文档说它可以采用可选的函数参数,但没有示例。这个怎么用?

【问题讨论】:

    标签: function arguments promise sample jquery-deferred


    【解决方案1】:

    它是一种语法糖,通过它您可以在解析或拒绝相同的延迟对象时添加回调/处理程序。

    所以,下面的两个代码片段会做同样的事情。

    // with constructor method argument
    var x = $.Deferred(function(selfDfd){ 
               selfDfd.done( console.log.bind(console,'I am resolved,in constructor')); 
            });
    x.resolve();
    
    // without constructor method argument
    
    var y = $.Deferred();
    y.done(console.log.bind(console,'I am resolved, NO constructor args'))
    y.resolve();
    

    【讨论】:

      【解决方案2】:

      使用以下语法:

            function foo(){ console.log("Yes!!!")}
            function bar(){ console.log("Are we there yet?")}
            function baz(){ console.log("I can't hold it much longer!?")}
      
            with($.Deferred() )
              {
              done(foo);
              bar();
              baz();
              resolve(foo);
              }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>

      生成器会产生同样的效果:

            var foobarbaz = function(i){var count = count || i; return function(){console.log("Yes!!!"); return ++count;}}
            var bar = function(){ console.log("Are we there yet?")}
            var baz = function(){ console.log("I can't hold it much longer!?")}
      
            
            var done = foobarbaz(0);
            bar();
            baz();
            done();

      参考文献

      【讨论】:

        猜你喜欢
        • 2022-12-20
        • 1970-01-01
        • 1970-01-01
        • 2018-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多