首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用node-fetch的动态请求

使用node-fetch的动态请求
EN

Stack Overflow用户
提问于 2019-02-10 02:33:51
回答 1查看 544关注 0票数 2

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

代码语言:javascript
复制
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)});
}

并且以同步的方式:

代码语言:javascript
复制
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);
}

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

代码语言:javascript
复制
0.03244206
0.03244206
0.03244206
0.03244206
0.03244206

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2019-02-10 02:36:49

您需要了解,setTimeout不会停止循环的执行……循环设置要逐个执行的所有超时

代码语言:javascript
复制
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);

使用异步/等待:

代码语言:javascript
复制
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);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54609378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档