使用AJAX时如何避免嵌套函数?

Fle*_*ore 5 javascript ajax readability

顺序异步调用很严重.有更可读的解决方案吗?

问题是这很难遵循:

ajaxOne(function() {
  // do something
  ajaxTwo(function() {
    // do something
    ajaxThree()
  });
});
Run Code Online (Sandbox Code Playgroud)

其中匿名函数是在服务器响应上调用的回调.

我正在使用第三方API来进行AJAX调用,所以我需要一个通用的解决方案.

fbu*_*ger 3

函数式编程来拯救你!jsdeferred允许您像这样编写示例:

next(ajaxOne).next(ajaxTwo).next(ajaxThree).error(function(e){alert('An error happened:' + e)})
Run Code Online (Sandbox Code Playgroud)

每个“顺序”ajaxOne/Two/Three 函数都接收其前一个函数的返回结果作为参数。如果需要传递其他参数,可以在调用 ajax 链之前将它们公开在全局对象中。