NodeJS Promise,延迟 return 值

NodeJS Promise, delaying return value

我对 NodeJS 和 JavaScript 比较陌生,但不是编程。

在通过 SSH2 执行了两个 SSH 命令并且解析了 shell 中命令的输出后,我正在寻找 return 一组对象。我已经尝试了各种 Promises 和我在网上找到的例子,但都无济于事。看起来他们只是 return 空数组,甚至没有等待命令执行。我正在寻找任何样本或正确方向的点。

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)
  })
}

问题是第二个 .then(具有 sleep() 函数的那个​​)没有返回承诺,因此它立即解决而不是 等待 执行最后一个.then

之前指定的time
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 */
});

*在箭头函数中使用括号语法使它们更加清晰。