节点函数在 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() 的实现方式。