NodeJS Promise,延迟 return 值
NodeJS Promise, delaying return value
我对 NodeJS 和 JavaScript 比较陌生,但不是编程。
在通过 SSH2 执行了两个 SSH 命令并且解析了 shell 中命令的输出后,我正在寻找 return 一组对象。我已经尝试了各种 Promise
s 和我在网上找到的例子,但都无济于事。看起来他们只是 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 */
});
*在箭头函数中使用括号语法使它们更加清晰。
我对 NodeJS 和 JavaScript 比较陌生,但不是编程。
在通过 SSH2 执行了两个 SSH 命令并且解析了 shell 中命令的输出后,我正在寻找 return 一组对象。我已经尝试了各种 Promise
s 和我在网上找到的例子,但都无济于事。看起来他们只是 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 */
});
*在箭头函数中使用括号语法使它们更加清晰。