gpt4 book ai didi

javascript - 如何使用 for 循环并使用 Node 返回结果?

转载 作者:行者123 更新时间:2023-12-02 17:41:51 24 4
gpt4 key购买 nike

我正在尝试运行一个多次执行相同操作的脚本,但我不想在回调后编写回调。我是 Node.js 的初学者,所以我不确定执行此操作的正确方法。下面是我的代码:

exports.index = function (req,res) {
/* some code */
something.execute(this, that, function(results) {
for (var i = 2; i <= 10; i++) {
var nextPage = getNextPage(i);
}
}
}

function getNextPage(page) {
something.execute(this, that, function(results) {
return results;
}
}

所发生的情况是结果返回为未定义。我知道这与 getNextPage 在其余代码之后完成有关,因为 Node 是异步的,但我不确定解决此问题的最佳方法是什么。

有什么建议吗?谢谢!

编辑:在 getNextPage 中添加了代码。我几乎在另外 9 个页面上运行相同的代码。看来我需要弄清楚如何强制 some.execute 循环运行。

最佳答案

我认为在 Node 中编码的多种方式/风格的最佳概述是 Mixu's Node Book Ch 7 "Control Flow" 。具体示例为“7.2.1 控制流模式 #1:串行 - 异步 for 循环”和“7.2.2 控制流模式 #2:完全并行 - 异步并行 for 循环”。我在这里为您粘贴了 7.2.1,因为许多 stackoverflow 用户不喜欢没有摘录的外部链接。

function async(arg, callback) {
console.log('do something with \''+arg+'\', return 1 sec later');
setTimeout(function() { callback(arg * 2); }, 1000);
}
function final() { console.log('Done', results); }

var items = [ 1, 2, 3, 4, 5, 6 ];
var results = [];

items.forEach(function(item) {
async(item, function(result){
results.push(result);
if(results.length == items.length) {
final();
}
})
})

关于javascript - 如何使用 for 循环并使用 Node 返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22128488/

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