【发布时间】:2017-08-19 13:26:16
【问题描述】:
我正在使用async.eachLimit 函数来控制一次操作的最大数量。
const { eachLimit } = require("async");
function myFunction() {
return new Promise(async (resolve, reject) => {
eachLimit((await getAsyncArray), 500, (item, callback) => {
// do other things that use native promises.
}, (error) => {
if (error) return reject(error);
// resolve here passing the next value.
});
});
}
如您所见,我无法将 myFunction 函数声明为异步,因为我无法访问 eachLimit 函数的第二个回调中的值。
【问题讨论】:
-
“如你所见,我不能将 myFunction 声明为异步”---你能详细说明一下吗?
-
哦,好吧...对不起。我需要构造函数,因为我需要 async.eachLimit 来避免一次超过 500 个异步操作。我正在从文本文件中下载和提取数据,我想避免太多的异步操作,在我提取数据后,我必须返回一个带有数据的 Promise,我将无法从 async.eachLimit 的回调中返回它.
-
1.为什么需要等待?异步已经是一种控制流机制。 2. 如果你想在 node.js 中使用带有 Promise 的 async.js,请查看 async-q
-
为了避免回调地狱,如果有东西抛出,外部承诺会捕获。
标签: javascript node.js asynchronous async-await