gpt4 book ai didi

javascript - 异步 JavaScript 和函数

转载 作者:太空宇宙 更新时间:2023-11-04 02:57:31 25 4
gpt4 key购买 nike

我正在编写 Steam 机器人来计算发送元素的价格。我无法正确使用函数。我想从 URL 获取价格,然后将其添加到 console.log。

我做不到,因为 console.log 在循环之前执行。

我对 Javascript 很陌生,我无法修复它:(

var whole_price = 0;
for(var i=0 ; i<offer.itemsToReceive.length; i++){
getPrice(offer.itemsToReceive[i].market_hash_name, function(price){
whole_price += price;
});
}
console.log('Accepted offer from ' + offer.partner + ' with ' + offer.itemsToReceive.length + ' items valued as '+whole_price+'$.' );

获取 URL 价格的函数:

function getPrice(name, callback){
name = name.replace(/\ +/g, '%20');
var url = 'http://steamcommunity.com/market/priceoverview/?currency=1&appid=730&market_hash_name='+name;
var price = 0;


request(url ,function(error, res, body){
var useCSGOBACKPACK = false;
if(!error && res.statusCode == 200){
body = JSON.parse(body);
if(body.success == true){
price = body.median_price.substr(1);
}else{
useCSGOBACKPACK = true;
}
}else{
useCSGOBACKPACK = true;
}

if(useCSGOBACKPACK==true){
url = 'http://csgobackpack.net/api/GetItemPrice/?id='+name+'&currency=USD';
request(url, function(error, res, body){
body = JSON.parse(body);
price = body.median_price;
});
}

callback(price);
});

}

最佳答案

做这样的事情的最好方法是......

var whole_price = 0;
var requestsMade = 0;
for(var i=0 ; i<offer.itemsToReceive.length; i++){
requestsMade++;
getPrice(offer.itemsToReceive[i].market_hash_name, function(price){
whole_price += price;
requestsMade++;

if(requestsMade == offer.itemsToReceive.length-1)
{
console.log(YOUR MESSAGE);
}
});
}

这基本上是确保在发出并响应所有请求之前不会记录消息。这是因为即使所有调用都是按特定顺序进行的,它们也可能以不同的顺序完成。

关于javascript - 异步 JavaScript 和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34843559/

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