【发布时间】:2019-08-19 12:56:16
【问题描述】:
我试图理解Promise 来自google源码,还没有发现它是如何异步执行代码的。
我对异步函数的理解是,它下面的代码可以在它之前的某个时间被解析。
例如:
setTimeout(()=>{console.log("in")}, 5000);
console.log("out");
// output:
// out
// in
第二行在第一行之前完成,所以我认为setTimeout 是一种异步技术。但是看到Promise的这段代码:
let p = new Promise((resolve, reject)=>{console.log('in'); resolve(1);});
console.log("out");
//in
//out
这个代码块实际上是逐行执行的,如果console.log('in');是一个耗时的操作,第二行会被阻塞直到解决。
我们通常这样使用Promise:
(new Promise(function1)).then(function2).then(function3)
这是否意味着:Promise只是用来保证function2在function1之后执行,不是实现asynchronous的技术,而是实现synchronous的方法(function1,function2,function3依次执行) .
【问题讨论】:
标签: javascript node.js asynchronous es6-promise