gpt4 book ai didi

javascript - 在 JavaScript 中等待两个异步命令

转载 作者:行者123 更新时间:2023-11-30 08:28:26 26 4
gpt4 key购买 nike

例如,假设我有这段代码:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com