在foo
完成后是否应该refreshToken
运行?现在foo在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();
答案 0 :(得分:2)
Promise只是用对象包装的回调,它们仍然是异步的。你需要用.then()
包装你的foo调用refreshToken()
.then(foo)
或
refreshToken()
.then(function(res){
foo()
})
选择在很大程度上取决于foo()的实现方式。