0

我想使用 dojo Deferred 编写一个回调函数。我写了两个函数,a和b

function a() {
        for(var i = 0; i < 3000; i++) {
            ....
        }
    }

需要更多时间,循环只是一个例子,也许还有别的。

function b() {
        console.log("b");
    }

我希望b可以等待a,就像a.then(b)一样,即a完成后,b开始运行。如果我写了 a();b(); 结果不是我想要的,因为 b 比 a 快。通常我使用 setTimeout 并且我认为它不是很好。比如a()可能需要100s,但是setTimeout我设置了50s,不行吗??

怎么写使用 Deferred,可以重写我的函数,比如 a() 和 b(),也就是一个函数等待另一个函数。

谢谢!!

4

1 回答 1

0

它应该与此有些相似:

require(["dojo/Deferred", "dojo/dom", "dojo/on", "dojo/domReady!"],
function(Deferred, dom, on){
  function a(msg){
    var deferred = new Deferred();

    setTimeout(function(){
      deferred.resolve(msg);
    }, 1000);

    return deferred.promise;
  }

  function b() {
     console.log("b");
  }

  on(dom.byId("startButton"), "click", function(){
    var a= a("message");

      a.then(function(results){
          console.log("Finished with result:"+results);
          b();
    });
  });

});
于 2013-05-30T05:30:07.260 回答