微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 承诺在下次之前不等待解决

码:

var x = new Promise((resolve, reject) => {
    setTimeout( function() {
        console.log( 'x done' );
        resolve()
    }, 1000 );
});


Promise.resolve().then(x).then((resolve, reject) => {
    console.log( 'all done' );
});

输出

all done
x done

预期产量:

x done
all done

调用一个回调之前,为什么x不等待解决

JSfiddlehttps://jsfiddle.net/puhbqtu0/1/

解决方法:

因此,当你想在一个系列中运行promises时,你应该将x转换为function并在之后调用它:

function x() {
  return new Promise(resolve => {
    setTimeout(() => {
      console.log('x done');
      resolve()
    }, 1000);
  });
});

Promise.resolve()
  .then(x)
  .then(() => console.log('all done'));

或最简单的变体:

x().then(() => console.log('all done'));

jsfiddle demo

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐