javascript - 使用 Node 获取的动态请求

标签 javascript node.js npm fetch

我需要从快速实现的 API 中获取一个值。问题是我编写的代码总是给我带来相同的值。我尝试了两种方法:

var fetch = require("node-fetch");
for(let i=0; i<5; i++){
setTimeout(function(){}, 3000);
fetch('https://api.binance.com/api/v3/avgPrice?symbol=ETHBTC')
.then(res => res.json())
.then(data => {console.log(data.price)});
}

并以同步方式:

var fetch = require("node-fetch");
var request = async () => {
var response = await fetch('https://api.binance.com/api/v3/avgPrice? 
symbol=ETHBTC');
var json = await response.json();
console.log(json.price);
}
for(let i=0; i<5; i++) {
setTimeout(function(){request();}, 3000);
}

但我总是得到这样的东西:

0.03244206
0.03244206
0.03244206
0.03244206
0.03244206

有什么建议吗?

最佳答案

您需要了解 setTimeout 不会停止循环的执行...循环将所有超时设置为依次执行

const fetch = require("node-fetch");
let i = 0, times = 5;
const interval = setInterval(() => {
    if (++i < times) clearInterval(interval);
    fetch('https://api.binance.com/api/v3/avgPricesymbol=ETHBTC')
        .then(res => res.json())
        .then(data => {console.log(data.price)});
},3000);

使用异步/等待:

const fetch = require("node-fetch");
let i = 0, times = 5;
const interval = setInterval(async () => {
    if (++i < times) clearInterval(interval);
    const response = await fetch("https://api.binance.com/api/v3/avgPricesymbol=ETHBTC");
    const json = await response.json();
    console.log(json);
},3000);

关于javascript - 使用 Node 获取的动态请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54609378/

相关文章:

javascript - $state.go 方法不切换到其他状态 - angularjs

windows - nodejs - 在 Windows 中 npm 安装 Canvas 错误

c# - jquery:如何找到当前元素之前的2个元素的元素

javascript - 如何说服开发人员内联和混合的 JavaScript/PHP 代码不好?

node.js - Exceljs数据验证列表导致Excel女士出错

npm - 如何更改通过 Electron 框架生成的.exe的文件版本,产品和版权权利值

node.js - React Native expo cli安装错误:404 Not Found - GET https://registry. npmjs.org/error-ex

javascript - 基本快速路线

javascript - 如何处理凯撒密码 (Javascript) 中的负移位

javascript - 尝试在 Mongoose 中使用 .find() 时出错