一次AJAX调用后如何避免回调地狱[关闭]

Posted

技术标签:

【中文标题】一次AJAX调用后如何避免回调地狱[关闭]【英文标题】:How to avoid callback hell after one AJAX call [closed] 【发布时间】:2017-03-30 01:16:38 【问题描述】:

我有一个 nodeJS 应用程序,它从 API 请求数据一次。然后我想通过使用单独的函数对这些数据进行一些处理。但是,由于 AJAX 是异步的,我不得不按如下方式使用 async:

async.series(
[
   function(callback)  getContentFromAPI("banana",callback); ,
   function(callback)  doSomeProcess1(callback); ,
   function(callback)  doSomeProcess2(callback); ,
   function(callback)  doSomeProcess3(callback); ,
   function(callback)  doSomeProcess4(callback); ,
]
);

有什么办法可以做得更好吗?我只请求一个异步进程并希望避免使用异步,因为所有其他进程都是同步的。

我该怎么办?

【问题讨论】:

使用 Promise 并从同步编程切换到异步编程 你应该考虑使用promise api Ajax,在 Node 中? 【参考方案1】:

但是,由于 AJAX 是异步的,所以我不得不按如下方式使用 async

您使一个非常简单和常见的过程过于复杂......我不知道 getContentFromAPI 的“签名”是什么,但是,如果它遵循“标准”节点回调“签名” - 那么您的过程应该一样简单作为

getContentFromAPI("banana", function(error, data) 
    if (error) 
        // your error handling goes here
     else 
        doSomeProcess1();
        doSomeProcess2();
        doSomeProcess3();
        doSomeProcess4();
    
);

【讨论】:

以上是关于一次AJAX调用后如何避免回调地狱[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose:我如何避免回调地狱,同时允许对不返回承诺的 mongoose 方法进行存根?

避免 nodeJs 中的回调地狱/将变量传递给内部函数

避免在 javascript 中循环多次返回 - async / await 以解决回调金字塔或回调地狱,

javascript异步代码的回调地狱以及JQuery.deferred提供的promise解决方式

告别回调地狱,在Node里优雅的访问MySQL

JavaScript中Promise 使用详解