【发布时间】:2018-01-15 12:11:47
【问题描述】:
我使用异步方法创建了一个包含我的用户凭据的解密文件:
initUsers(){
// decrypt users file
var fs = require('fs');
var unzipper = require('unzipper');
unzipper.Open.file('encrypted.zip')
.then((d) => {
return new Promise((resolve,reject) => {
d.files[0].stream('secret_password')
.pipe(fs.createWriteStream('testusers.json'))
.on('finish',() => {
resolve('testusers.json');
});
});
})
.then(() => {
this.users = require('./testusers');
});
},
我从同步方法调用该函数。然后我需要在同步方法继续之前等待它完成。
doSomething(){
if(!this.users){
this.initUsers();
}
console.log('the users password is: ' + this.users.sample.pword);
}
console.log 在this.initUsers(); 完成之前执行。我怎样才能让它等待呢?
【问题讨论】:
-
返回承诺和
this.initUsers().then...? -
你不能“同步等待一个承诺”。返回一个promise,调用者在promise上使用
.then()来知道它什么时候完成。 -
也许我问错了问题。与其等待承诺,我可以摆脱承诺stackoverflow.com/questions/45571213/…
标签: node.js asynchronous callback promise async-await