节点函数在 promise.then() 完成之前运行。
Node function runs before promise.then() completes.
foo
运行 完成后 refreshToken
不应该吗?现在 foo 运行s before foo
完成。
function refreshToken() {
var tokenFile = path.join(__dirname, 'token-file.json');
return fs.readFileAsync(tokenFile, {encoding: 'utf-8'})
.then(function(tokenString) {
token = JSON.parse(tokenString);
}).catch(function(err) {
console.log("No token-file.json file found. " .red +
"Please complete for a new one." .red);
createTokenFile();
});
}
refreshToken();
foo();
Promise 只是用对象包裹的回调,它们仍然是异步的。你需要用 .then()
包装你的 foo 电话
refreshToken()
.then(foo)
或
refreshToken()
.then(function(res){
foo()
})
选择很大程度上取决于 foo() 的实现方式。
foo
运行 完成后 refreshToken
不应该吗?现在 foo 运行s before foo
完成。
function refreshToken() {
var tokenFile = path.join(__dirname, 'token-file.json');
return fs.readFileAsync(tokenFile, {encoding: 'utf-8'})
.then(function(tokenString) {
token = JSON.parse(tokenString);
}).catch(function(err) {
console.log("No token-file.json file found. " .red +
"Please complete for a new one." .red);
createTokenFile();
});
}
refreshToken();
foo();
Promise 只是用对象包裹的回调,它们仍然是异步的。你需要用 .then()
包装你的 foo 电话refreshToken()
.then(foo)
或
refreshToken()
.then(function(res){
foo()
})
选择很大程度上取决于 foo() 的实现方式。