例如,假设我有这段代码:
var cmd = require('node-cmd')
function getStuff() {
return new Promise((resolve, reject) => {
var dataNStuff;
cmd.get('brew --version', data => {
dataNStuff += data;
})
cmd.get('yarn global ls', data => {
dataNStuff += data;
})
resolve(dataNStuff)
})
}
在这种情况下 cmd.get() 是异步的,所以我不知道数据何时进入。我希望能够在我 resolve(dataNStuff )
,这甚至可以通过 Promise 实现,不,我不想在这种情况下使用回调。有没有更简单或更快的方法来做同样的事情?
最佳答案
使用 Promises 作为解决方案,使用 Promise.all 和“promisified”版本的 cmd.get
var cmd = require('node-cmd');
var cmdPromise = arg => new Promise((resolve, reject) => cmd.get(arg, resolve));
function getStuff() {
return Promise.all([cmdPromise('brew --version'), cmdPromise('yarn global ls')])
.then(results => results.join(''));
}
“解释” cmdPromise 以防压缩版本不可读,基本上是这样的:
var cmdPromise = function cmdPromise(arg) {
return new Promise((resolve, reject) => {
cmd.get(arg, data => resolve(data));
});
};
关于javascript - 在 JavaScript 中等待两个异步命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41540815/