dojo延迟回调函数

dojo延迟回调函数,dojo,callback,settimeout,deferred,resolve,Dojo,Callback,Settimeout,Deferred,Resolve,我想用dojo编写一个回调函数。我写了两个函数,a和b function a() { for(var i = 0; i < 3000; i++) { .... } } 我希望b可以等待a,就像a一样。然后(b),即a完成后,b开始运行。如果我写了一个();b(); 结果不是我想要的,因为b比a快。通常我使用setTimeout,但我认为它不好。 例如,a()可能需要100秒,但setTimeout我设置了50秒,这不正常 我

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

function a() {
        for(var i = 0; i < 3000; i++) {
            ....
        }
    }
我希望b可以等待a,就像a一样。然后(b),即a完成后,b开始运行。如果我写了一个();b(); 结果不是我想要的,因为b比a快。通常我使用setTimeout,但我认为它不好。 例如,a()可能需要100秒,但setTimeout我设置了50秒,这不正常

我如何编写使用延迟,可以像a()和b()那样重写我的函数,也就是说,一个函数等待另一个函数


谢谢

它应该与此类似:

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();
    });
  });

});
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();
    });
  });

});