默认情况下,ES6 Promises看起来像异步,而无需在Node中使用process.nextTick
(例如,与events
不同)。
e.g:
Promise.resolve('foo').then(function a() {
console.log('bar');
});
console.log('baz');
“baz”在“bar”之前被记录,因此它看起来是异步的。
使用Node.js,内部可以通过process.nextTick
或不可以完成。
然而,使用浏览器,如何通过本机承诺实现异步?它是使用setTimeout还是其他一些工具?
我们也可以看到这也是异步的:
new Promise(function(resolve){
resolve('foo'); //called synchronously
}).then(function(){
console.log('bar');
});
console.log('baz');
(“baz”将首先记录)