【发布时间】:2015-08-26 23:05:21
【问题描述】:
我是nodejs的新手,有一些问题,返回值到主函数。
我尝试了类似的方法,但对我的工作无效。
function request_price(name)
{
var price;
(function(price_r) {
request('http://jack.dev/price.php?name='+encodeURIComponent(name), function(error, response, body)
{
console.log(body);
price_r = body;
});
})(price);
return price;
}
我需要从请求返回主体值到主函数request_price
编辑:
for (var i = 0; i < offer.items_to_receive.length; i++) {
for (var j = 0; j < inventory.length; j++) {
if (offer.items_to_receive[i].assetid == inventory[j].id) {
var price = request_price(inventory[j].market_name, responseHandler);
OfferData.items.push({
id: inventory[j].id,
name: inventory[j].name,
image: inventory[j].icon_url,
price: price
});
break;
}
}
}
setTimeout(function () {
console.log(OfferData);
}, 1000)
responseHandler 函数显示 console.log 正常,但 console.log 上的对象 OfferData 在价格上返回 undefined
【问题讨论】:
-
这个问题有数百个重复。这是异步!你不能从你的函数中返回值。您必须使用回调。我已将其标记为How to return response from an asynchronous call。虽然该特定问题是关于客户端代码的,但概念是相同的,并且该答案比其他答案更好地涵盖了各种选项。
-
with jquery 可以使用代理,来解决这个问题,但在节点我不知道。
-
阅读该问题的选定答案。它涵盖了多个选项并解释了异步响应的概念。阅读,学习,学习。然后,如果您不了解某些内容,请提出更具体的问题。如果这就是您所说的代理时的意思,您可以在 node.js 中使用 Promise。对于 node.js,这个问题每天都会被问多次。对于学习 node.js 的人来说,这是一个非常常见的障碍。它必须被研究和学习。
-
我已经用更多信息编辑了我的原始帖子。这只是关于如何解决您的问题的建议。正如@jfriend00 所说,这是你在nodejs 中必须掌握的非常常见的技能。
标签: node.js function callback return