序
在Node.js中,大量的方法(如网络相关的方法)都是异步方法。这对于习惯了传统同步代码的程序员来说,充满了太多"神奇"的现象。
本文要解决的问题是,如何让异步方法获取外部的参数。
有问题的写法:
下面是一个简单的例子。假设有一个异步的网络调用方法,然后循环调用N次,在控制台上输出调用的次数。
var request = require('request');
// 异步获取网络资源的方法
getWeb = (index, getCallback) => {
var url = 'http://www.duzixi.com';
request(url, function (error, response, body) {
if (!error && response.statusCode == 200)
{
getCallback(body);
return body;
} else {
console.log(response.statusCode + " " + error);
getCallback("");
return "";
}
})
}
// 循环调用
for (var i = 0; i <= 10; i++) {
getWeb(i, (body)=>{
console.log(i);
})
}
神奇
Node.js异步方法中获取外部参数的陷阱与解决方案

本文探讨了在Node.js中,由于异步特性导致的无法直接获取外部参数的问题。通过一个循环调用网络方法的例子,展示了问题的现象及原因,并提出使用闭包作为解决方案。最终实现正确传递参数给异步方法的目标。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



