【发布时间】:2018-07-09 21:00:12
【问题描述】:
Promise.resolve(22)
.then((s)=> console.log('a',s))
.then( () => {
throw 'Oh no!';
}).catch( err => {
console.error( 'b', err );
}).then( () => {
console.log( 'c' );
});
^ 我正在学习异步编程,我了解到 .then 在 promise 中等待执行结束,然后执行,但是这部分充满了 .then,我不确定正确的执行顺序. 使用 NodeJs 在本地运行它,我得到以下输出:
a 22
b Oh no!
c
但是在在线编译器上运行相同的代码我得到不同的执行顺序。 在一个我得到这个:
a 22
c
b Oh no!
在其他时候
Error(s), warning(s):
b Oh no!
a 22
c
提前致谢!
【问题讨论】:
-
什么是 one 和 other 编译器?如果您有问题,请考虑提供一种方法来复制它。见stackoverflow.com/help/mcve。如果您正确执行此操作,则不太可能按时间顺序获得 While on other 输出,因为这不是 Promise 的工作方式。
-
这些“其他”似乎将输出分组到错误/日志中
-
在线编译器是我在 google rextester.com/l/nodejs_online_compiler 和 tutorialspoint.com/execute_nodejs_online.php 上找到的。在 jsfiddle 上执行此命令与第一个命令(我在本地得到的那个)输出相同
-
@R1ddler。与其使用这些服务,不如直接在浏览器中启动开发者控制台来查看实际结果。
标签: javascript node.js asynchronous