javascript - Promise.all 替换?
问题描述
有什么方法可以让我在 Javascript 中调用多个异步函数,但是一旦完成就得到调用的响应,这与等待所有异步调用完成的 Promise.all 不同?我想要的是,并行运行异步调用,并在其他调用仍在运行时立即获得相应调用的响应,然后更新反应状态。
我已经在使用 Promise.all 进行多个异步调用,但它会在所有调用完成时给出响应。
解决方案
您可以迭代一系列承诺并更改每个承诺解决方案的状态:
let state = null;
const p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve({p1: 1});
}, 2000);
});
const p2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve({p2: 2});
}, 1000);
});
const p3 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve({p3: 3});
}, 3000);
});
// Iterate promises
[p1, p2, p3].forEach(p => {
p.then(res => {
state = Object.assign({}, state, res);
console.log(state);
});
});
console.log(state);
Promise
您可以为此任务创建自己的方法:
if (!Promise.each) {
Promise.each = function(promises, callback, error) {
if (promises && Array.isArray(promises)) {
promises.forEach(p => {
p.then(res => {
callback(res);
}, err => {
if (error) {
error(err);
} else {
console.log(err);
}
});
});
}
}
}
// Usage
Promise.each([p1, p2, p3], updateState);
推荐阅读
- javascript - 使用 JEST + JSDOM 导入函数
- c# - 无法实现接口成员“IStoreListener”
- asp.net-mvc - ASP.NET "asp-route" Tag Helper polymorfisme
- docker - 使用 docker 构建和运行映像时没有任何反应
- r - 无法将 qt 函数用于 P(-t
我发现这方面的信息很少。我是统计分析和 Rscript 的新手,所以我很难做到这一点。
我正在尝试
P(-t<X<t) = 0.96
使用X ~t(11)
qt 函数查找 t我走了,发现
P(X<t)
它给了我 1.928427,qt(0.96,11)
但是当我试图找到- python - 设置 Bloomberg Python API 时的 ImportError _versionhelper
- python-3.x - pandas 中的 to_datetime() 返回分类类型而不是日期时间对象
- javascript - 从类组件切换到功能组件
- python - 试图从输入中获取列表(python)
- python - 在单个“python -c”文本字符串中使用循环运行多个语句