javascript - 如何在 jQuery 1.8.x 中链接一系列延迟函数?

标签 javascript asynchronous jquery-deferred

鉴于这些功能:

function func1() {
  var dfd = $.Deferred();

  setTimeout(function() {
    dfd.resolve('Password');
  }, 1000);

  return dfd.promise();
}

function func2(message) {
  var dfd = $.Deferred();

  setTimeout(function() {
    if (message == 'Password') {
      dfd.resolve('Hello World');
    }
   }, 1000);

  return dfd.promise();
}

我想找到一种更好的方法来执行以下操作。注意这是使用 jQuery 1.8.x。
var promise = func1();

promise.done(function(message1) {

  var promise2 = func2(message1);

  promise2.done(function(message2) {
    alert(message2);
  });
});

有任何想法吗?我认为使用 jQuery #pipe 或 #then 会起作用,但我想不通。这是一个可以玩的 fiddle :http://jsfiddle.net/Z7prn/

最佳答案

这并不复杂(使用 .then.pipe ,我认为它们自 jQuery 1.8 以来都是相同的)。

func1().then(func2).done(function(message) {
    alert(message);
});

由于func2返回一个新的延迟对象 .done回调被附加到那个。

DEMO

关于javascript - 如何在 jQuery 1.8.x 中链接一系列延迟函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651243/

相关文章:

javascript - 如何在一个页面中打开多个对话框?

javascript - 如何在Three.js中动态切换 "receiveShadow"?

JavaScript:在一天开始时更新一次本地存储

javascript - 同步执行 Sequelize 查询

javascript - AJAX - 同时运行两个请求,但其中一个以一定间隔重复运行

javascript - jQuery promise 不使用方法 html undefined

javascript - 如果检查了 php 条件,则通过 JQuery 将类添加到元素

c# - 从同步操作方法 : Task. Run 或 ConfigureAwaits(false) 调用异步方法

python - 清除Python中的线程?

javascript - Knockoutjs 事件绑定(bind)到图像加载事件