延迟承诺,

所以,我有两个承诺,我想在屏幕上打印,中间有 3 秒的延迟。我将如何实现它。下面是代码。


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() {

  setTimeout(() => {

    const response = Promise.all.next();

    console.log(response);

  }, 3000);

});


慕哥6287543
浏览 216回答 4
4回答

神不在的星期二

我建议你使用延迟功能。首先你遍历数组中的每个响应并使用它们之间的延迟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)   }   });

白猪掌柜的

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

慕桂英4014372

如果您只想延迟日志,则可以按照@Daniel Rodríguez Mezaresponse的说明添加参数。但是如果你想延迟response任何一个承诺promiseOne,promiseTwo那么你应该setTimeout(() => resolve("Hello"), 300);在各自的承诺中使用,如下所示。也不要setTimeout在里面使用Promise.All。根据OP 的评论,resolve promiseTwo 3 seconds我在解决后更新了答案promiseOne。在这里,我将resolveof分配给了 3 秒后在内部使用的promiseTwo全局变量。resolvePromiseTwopromiseOneresolve promiseTwo注意我已经使用.thenafterpromiseOne和promiseTwojust 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);});

郎朗坤

你已经非常接近了,你只需要从的结果中接收值,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();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript