我一直在尝试围绕异步编程和 Promise 的使用。为了帮助理解它们,我编写了一些简单的嵌套代码,但遇到了障碍。
这是代码:http ://pastebin.com/hBtk9vER 确保在库时安装(npm install)
var when = require('when');
function promise() {
console.log("Promise");
promiseRead().then(function(string) {
console.log("Inner promise");
console.log(string);
});
}
function promiseRead() {
console.log("PromiseRead");
return baz().then(function() {
console.log("Inner Read");
var deferred = when.defer();
setTimeout(function() {
deferred.resolve("Hello World");
}, 5000);
});
}
function baz() {
console.log("BAZ");
return when(true);
}
promise();
我的问题是console.log(string)
未定义,当我期望它"Hello World"
在promiseRead()
解决之后。有趣的是,当我删除超时时,它按预期工作。任何人都可以帮助解释这一点,为什么promise
函数promiseRead()
在超时之前执行它的代码。
非常感激