我对NodeJS和JavaScript相对较新,但不是编程。
我希望在通过SSH2执行两个SSH命令后返回一个对象数组,并且已经解析了shell中命令的输出。我尝试了各种Promise
和我在网上找到的例子,但无济于事。看起来他们只是在没有等待命令执行的情况下返回空数组。我正在寻找正确方向的任何样本或点。
return Promise.resolve().then(function() {
devicesAndScenes = [];
executeCommand(JSON.stringify(getDeviceJson));
executeCommand(JSON.stringify(getSceneJson));
}).then(sleep(2000)).then(function() {
return devicesAndScenes;
});
function sleep(time) {
return new Promise(resolve => {
setTimeout(resolve, time)
})
}
答案 0 :(得分:2)
问题是第二个.then
(具有sleep()
功能的那个)没有返回承诺,因此它立即解决而不是等待执行最后time
.then
return Promise.resolve()
.then(() => {
/* ... */
})
.then(() => {
/* your problem was here, if we add a return it should work properly */
return sleep(2000)
})
.then(() => {
/* now this wil be executed after the 2000s sleep finishes */
});
*在箭头函数中使用括号语法使它们更清晰。