【发布时间】:2017-03-05 16:31:23
【问题描述】:
我正在开发一个模块,该模块使用request 模块返回从http 请求中检索到的数据。但是,当我想将数据从函数中传递出来时,我遇到了问题。以这个为例。
function getData(term) {
var parsedData
request.post(url, term, (err, response, body) => {
if (!err && response.statusCode == 200) {
parsedData = doSomethingTo(body);
}
});
return parsedData;
}
此方法不起作用,因为函数 getData() 异步执行,并且在请求真正返回正确数据之前返回值。
function getData(term) {
var parsedData
request.post(url, term, (err, response, body) => {
if (!err && response.statusCode == 200) {
parsedData = doSomethingTo(body);
return parsedData;
}
});
}
此方法也不起作用,因为它只会使 request 函数返回解析后的数据,而不是 getData 函数。
如何让父函数返回请求函数解析的数据?
【问题讨论】:
-
request.post 是异步的,您要么必须将回调函数传递给使用 parsedData 执行的 getData 函数,要么使用 Promise
标签: node.js function asynchronous return