如何从 API 的重复承诺中获取值?
How do I get the values from a repeating promise from an API?
我正在对一项服务进行 API 调用,该服务在完成之前一直给我结果。因此,当我在我的代码中 运行 this 时,它将列出每个项目,因为它被推入数组
const faxList = [];
client.fax.faxes.each((faxes) => {
faxList.push(faxes);
console.log(faxList);
});
输出:
[ '0' ]
[ '0', '1' ]
[ '0', '1', '2' ]
[ '0', '1', '2', '3' ]
如何等待该循环完成,然后 return 完成数组?目标是让 faxList
作为我可以使用的可用变量。例如通过快递发送。我试过 async/await 但在完成之前只输出第一个结果。使用 then/catch 的结果相同。任何帮助将不胜感激。
对于您使用 twilio 客户端的具体问题,您可以改用 .list
方法。它将 return 一个解析记录数组的承诺:
client.fax.faxes.list().then(faxes => console.log(faxes));
更通用的方法要求 API 至少提供
- 获取每个值的方法
- 一种在获取所有值时收到通知的方法(即 API 已“完成”)
在下面的示例中,我们假设 API 会触发两个事件,当值可用时 data
和所有值都已获取时 done
。
围绕此 API 调用 "wrap" Promise 的一般方法。我们收集数组中的值并在 API 完成时解决承诺。
function fetchData() {
return new Promise((resolve, reject) => {
const values = [];
someAPI.fetch({
data: value => values.push(value),
done: () => resolve(value),
error: error => reject(error),
});
});
}
// Then used as
fetchData().then(values => console.log(values));
同样,如何具体执行此操作取决于相关 API 的工作方式。
我正在对一项服务进行 API 调用,该服务在完成之前一直给我结果。因此,当我在我的代码中 运行 this 时,它将列出每个项目,因为它被推入数组
const faxList = [];
client.fax.faxes.each((faxes) => {
faxList.push(faxes);
console.log(faxList);
});
输出:
[ '0' ]
[ '0', '1' ]
[ '0', '1', '2' ]
[ '0', '1', '2', '3' ]
如何等待该循环完成,然后 return 完成数组?目标是让 faxList
作为我可以使用的可用变量。例如通过快递发送。我试过 async/await 但在完成之前只输出第一个结果。使用 then/catch 的结果相同。任何帮助将不胜感激。
对于您使用 twilio 客户端的具体问题,您可以改用 .list
方法。它将 return 一个解析记录数组的承诺:
client.fax.faxes.list().then(faxes => console.log(faxes));
更通用的方法要求 API 至少提供
- 获取每个值的方法
- 一种在获取所有值时收到通知的方法(即 API 已“完成”)
在下面的示例中,我们假设 API 会触发两个事件,当值可用时 data
和所有值都已获取时 done
。
围绕此 API 调用 "wrap" Promise 的一般方法。我们收集数组中的值并在 API 完成时解决承诺。
function fetchData() {
return new Promise((resolve, reject) => {
const values = [];
someAPI.fetch({
data: value => values.push(value),
done: () => resolve(value),
error: error => reject(error),
});
});
}
// Then used as
fetchData().then(values => console.log(values));
同样,如何具体执行此操作取决于相关 API 的工作方式。