gpt4 book ai didi

javascript - 在node.js中使用async模块

转载 作者:太空宇宙 更新时间:2023-11-04 00:38:49 25 4
gpt4 key购买 nike

我知道了这个async module ,每个人都在谈论它。据我所知,下面的代码将在 2 个数据库调用完成时触发回调。

async.parallel([
function(){ dbcall() },
function(){ dbcall() }
], callback);

但是必须使用异步模块吗?如果我正确包装我的代码,它也可以是异步的。就像我在 Controller 中写的一样

var Token = require('../models/token');
Token.getAllTokens(owner, function(err,callback){
var device_tokens = callback.token;
GCM_call(device_tokens); //another ajax call
});

上面的代码可以工作,我测试过,GCM_call将在getAllTokens之后等待并运行。那么为什么要使用异步模块呢?只是为了让代码更具可读性吗?

最佳答案

So why use async module? is it just to make the code more readable?

在某种程度上,是的,为了使其更具可读性。它提供了一些有用的实用程序来编写更具可读性和更高性能的代码。

但最重要的是,因为它解决了使用异步功能时的一些常见问题。您正在展示一个使用单个回调的示例,其中第一个代码块中的异步模块示例首先等待一些异步内容完成,然后调用回调函数。你会如何用 vanilla js 解决这个问题?如果您了解 Promise API,您可能会说 Promise.all([promise1, promise2, ...])。但是,当您想使用像 async.series 这样一次只能运行一个任务的东西时该怎么办?在这种情况下,您经常会看到被破解的解决方案,这被称为“回调 hell ”,其中回调嵌套在另一个中。

因此,您可以使用 Promise API 创建普通代码解决方案,甚至可以通过添加 future ECMAScript 规范中的 async/await 来创建更简单的代码解决方案,但是这个库可以让您免去每次出现上述问题时重复此操作的麻烦。

关于javascript - 在node.js中使用async模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37759065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com