4 回答

TA贡献1963条经验 获得超6个赞
我建议你使用延迟功能。首先你遍历数组中的每个响应并使用它们之间的延迟
const promiseOne = new Promise(function(resolve, reject) {
resolve("Hello")
});
const promiseTwo = new Promise(function(resolve, reject) {
resolve("Good Morning")
});
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
Promise.all([promiseOne, promiseTwo]).then(async function(resps) {
for(let res of resps){
console.log(res);
await delay(3000)
}
});

TA贡献1893条经验 获得超10个赞
const promiseOne = new Promise(function(resolve, reject) {
resolve("Hello")
});
const promiseTwo = new Promise(function(resolve, reject) {
resolve("Good Morning")
});
Promise.all([promiseOne, promiseTwo]).then(function(all) {
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(all);
}
, 3000);
});
}).then(console.log)
在 中返回新的 Promise then,该 Promise 等待x毫秒并解决它。
接下来做任何事情then

TA贡献1871条经验 获得超13个赞
如果您只想延迟日志,则可以按照@Daniel Rodríguez Mezaresponse
的说明添加参数。
但是如果你想延迟response
任何一个承诺promiseOne
,promiseTwo
那么你应该setTimeout(() => resolve("Hello"), 300);
在各自的承诺中使用,如下所示。也不要setTimeout
在里面使用Promise.All
。
根据OP 的评论,resolve
promiseTwo
3 seconds
我在解决后更新了答案promiseOne
。
在这里,我将resolve
of分配给了 3 秒后在内部使用的promiseTwo
全局变量。resolvePromiseTwo
promiseOne
resolve
promiseTwo
注意我已经使用.then
afterpromiseOne
和promiseTwo
just to verify output
。你可以省略两者。
let resolvePromiseTwo = null;
const promiseOne = new Promise(function(resolve, reject) {
resolve("Good Morning")
setTimeout(() => resolvePromiseTwo("Hello"), 3000);
}).then(res => {
console.log('promiseOne resolved');
return res;
});
const promiseTwo = new Promise(function(resolve, reject) {
resolvePromiseTwo = resolve;
}).then(res => {
console.log('promiseTwo resolved');
return res;
});
Promise.all([promiseOne, promiseTwo]).then(function(response) {
console.log('Promise.all');
console.log(response);
});

TA贡献1921条经验 获得超9个赞
你已经非常接近了,你只需要从的结果中接收值,Promise.all然后处理该信息,如下所示:
const promiseOne = new Promise(function(resolve) {
resolve("Hello")
});
const promiseTwo = new Promise(function(resolve) {
resolve("Good Morning");
});
Promise.all([promiseOne, promiseTwo])
.then(function(response) {
setTimeout(() => {
console.log(response);
}, 3000);
});
编辑 根据 OP 给出的说明,他需要的是以下内容:
第一个promise resolve后,等待3秒再执行第二个promise。
const promiseOne = new Promise(function(resolve) {
resolve("Hello")
});
const promiseTwo = new Promise(function(resolve) {
resolve("Good Morning");
});
async function resolveWithDelay(delay = 3000) {
const res1 = await promiseOne;
console.log(res1);
setTimeout(async () => {
const res2 = await promiseTwo;
console.log(res2);
}, delay);
}
resolveWithDelay();
添加回答
举报