gpt4 book ai didi

javascript - 如何在 node.js 中的 for 循环中编写回调函数

转载 作者:搜寻专家 更新时间:2023-11-01 00:11:00 25 4
gpt4 key购买 nike

我正在尝试在 for 循环中编写一个函数。但是循环不会等到得到内部函数的响应。我怎样才能停止循环,直到每次都得到对函数的响应?

在此过程中,下一个循环取决于函数的响应。

我的示例代码:

var a = function(data, callback) {
var d = 1;
for (var i = 0; i < data.length; i++) {
b(d, function(err, result) {
if (!err) {
d = result;
}
if ((i + 1) === data.length) {
callback(err, 'something');
}
});
}
}
var b = function(data, callback) {
var c = data + 1;
callback(null, c);
}

在此代码中,for 循环不会等待它从函数 b 获得响应。

最佳答案

您可以通过在回调中调用递归函数来轻松迭代输入数组:

'use strict';

const a = function(data, callback) {
let i = 0;
let sum = 0;

// loop function
function next() {
const x = data[i++];
if (!x) {
return callback(null, sum);
}

return b(x, (err, data) => {
sum += data;
next();
});
}

next(); // starts iterating
}

// multiplies data * 3
const b = function(data, callback) {
let c = data * 3;
callback(null, c);
}


a([1, 2, 3], (err, data) => {
console.log(data); // prints 18
});

关于javascript - 如何在 node.js 中的 for 循环中编写回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45994413/

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