gpt4 book ai didi

node.js - 在 node.js 中使用递归模式循环

转载 作者:搜寻专家 更新时间:2023-10-31 22:16:54 25 4
gpt4 key购买 nike

我一直在尝试使用 node.js 遍历一系列城市,并向 google 发出迭代请求以获取每个城市的方向(然后我使用 JSON.parse 来提取行驶时间)。我需要找到一种同步执行此操作的方法,否则我将立即从谷歌请求每个城市的所有信息。我在 http://tech.richardrodger.com/2011/04/21/node-js-%E2%80%93-how-to-write-a-for-loop-with-callbacks/ 找到了一个很好的模式。但无法使回调工作。如您所见,我正在使用“显示”功能对其进行测试。我的代码如下:

var request = require('request');
var fs = require('fs');
var arr = ['glasgow','preston','blackpool','chorley','newcastle','bolton','paris','york','doncaster'];
//the function I want to call on each city from [arr]
function getTravelTime(a, b,callback){
request('https://maps.googleapis.com/maps/api/directions/json?origin='+a+'&destination='+b+'&region=en&sensor=false',function(err,res,data){
var foo = JSON.parse(data);
var duration = foo.routes[0].legs[0].duration.text;
console.log(duration);
});
};

function show(b){
fs.writeFile('testing.txt',b);
};


function uploader(i){
if( i < arr.length ){
show( arr[i],function(){
uploader(i+1);
});
}
}
uploader(0)

我遇到的问题是,只有数组中的第一个城市被输出,并且回调/迭代永远不会进行。请问我哪里出错了?

最佳答案

感谢您的指点,显然是因为我对 javascript 中的回调理解不足。只需阅读 O'Reilly 的 JavaScript 模式并点击“回调模式”部分 - 哦!

对于不知道的人,代码是这样工作的:

var arr = ['glasgow','preston','blackpool','chorley','newcastle','bolton','paris','york','doncaster'];

function show(a,callback){
console.log(a);
callback();
}

function uploader(i){
if( i < arr.length ){
show(arr[i],
function(){
uploader(i+1)
});
};
}
uploader(0)

关于node.js - 在 node.js 中使用递归模式循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161894/

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