cyt*_*nox 1 javascript asynchronous node.js promise
我写了一个小例子来学习如何使用Promises.我希望脚本启动并立即输出"start",几秒钟后输出"45".但是,在没有任何输出的情况下,脚本会启动,在退出之前,两行都会打印出来.我误解了Promises是如何工作的还是有缓冲问题?
;(function(main, undefined) {
"use strict";
main.test = function() {
return new Promise(function(resolve, reject) {
for(var i = 0; i < 999999999; ++i);
resolve(45);
});
};
})(global);
global.test().then(function(r) {
console.log(r);
});
console.log("start");Run Code Online (Sandbox Code Playgroud)
$ node -v v0.12.6
在promise中包装代码不会使其异步执行.它使得使用异步代码更容易.
在您的示例中,您的循环同步执行.以下是您使用的示例setTimeout,它以异步方式执行,而不是for循环.
;(function(main, undefined) {
"use strict";
main.test = function() {
return new Promise(function(resolve, reject) {
setTimeout(function() { resolve(45); }, 5000)
console.log(44);
});
};
})(global);
global.test().then(function(r) {
console.log(r);
});
console.log("start");
Run Code Online (Sandbox Code Playgroud)
在此示例中,输出将为:
start
44
45
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |