【发布时间】:2020-09-04 17:07:25
【问题描述】:
我正在尝试将从 api 调用(承诺)中获得的数字附加到数组中。当我测试数组的长度时,它总是返回 1,好像每个 api 调用都会重置数组并输入一个新数字。
代码如下:
API 调用
wiki()
.page("COVID-19_pandemic_in_Algeria")
.then((page) => page.fullInfo())
.then((info) => {
(data.confirmed.value = info.general.confirmedCases),
(data.recovered.value = info.general.recoveryCases),
(data.deaths.value = info.general.deaths);
});
const data = {
confirmed: { value: 0 },
deaths: { value: 0 },
recovered: { value: 0 },
};
现在我想将死亡人数放入一个数组中,这样我就有了接下来几天要跟踪的数字列表。
function countStats() {
const counter = [];
var deathCounter = data.deaths.value;
counter.push(deathCounter);
console.log(counter.length);
return counter;
}
countStats();
每次运行函数(wiki() 和 countStats())时,计数器数组的长度始终为 1。这是为什么呢?
【问题讨论】:
-
我假设是因为每次调用 countStats 时都会创建计数器。你应该把你的 const counter = [] 放到更高的范围内
-
我已经尝试将计数器向上移出功能,但没有成功。我怀疑这与 api 调用返回一个承诺有关?
-
您建议每天将数据存储在哪里?您不能将其存储在 Javascript 中。 Javascript 不是存储介质。
-
每次运行函数(wiki() 和 countStats())时,计数器数组的长度总是 1 1。这正是它应该如何工作的。为了利用返回的响应,
countStats())在最后一个.then()中。 2. 没错!每次调用countStats())都会初始化数组counter并向其中添加1 元素。所以数组的长度是1,就像编码一样。你的意图到底是什么? -
@PeterKA 我的意图是,如果我运行 wiki 函数 10 次,我应该在数组中有 10 个元素而不是 1。
标签: javascript arrays api promise