【问题标题】:How to create Promise using other Promise?如何使用其他 Promise 创建 Promise?
【发布时间】:2018-02-28 17:26:52
【问题描述】:

我正在使用child-process-promise module。所以我有这样的事情:

var promise = require('child-process-promise').spawn;

promise('some_command_producing_output')
    .then(function (result) {
        ...
    })
    .catch(function (err) {
        ...
    });

我想要的是在stdout 中的命令生成输出之后添加一些处理。所以最后我想创建一个这样使用的函数:

RunCommandAndProcess('some_command_producing_output')
    .then(function (result) {
        ...
    })
    .catch(function (err) {
        ...
    });

该函数应该使用来自child-process-promise的promise,等到成功的结果产生并返回promise处理数据。

【问题讨论】:

  • 那么,function RunCommandAndProcess(x) { return spawn(x) }? Promise 有值得注意的魔力,它们只是您可以传递并从辅助函数返回的值。
  • 我需要在产卵后执行的处理功能应该使用promise异步完成。
  • 所以插入.then(process)?
  • 假设 process 正在返回承诺,但我想将它们组合成一个承诺。
  • 是的,process 可以返回一个承诺。 then works just like that.

标签: javascript node.js promise


【解决方案1】:

真的只是

var spawn = require('child-process-promise').spawn;
function RunCommandAndProcess(cmd) {
    return spawn(cmd).then(function process(result) {
        … // do processing
        return …;
    });
}

【讨论】:

  • 所以在处理例程中我必须创建并返回另一个承诺,以使RunCommandAndProcess thenable,对吗?我想要RunCommandAndProcess.then(...)
  • 你可以退货或扔任何东西。 then() 调用总是返回一个承诺,无论你的回调有什么结果。
猜你喜欢
  • 1970-01-01
  • 2017-01-04
  • 2017-11-02
  • 2019-10-21
  • 2016-05-09
  • 1970-01-01
  • 2019-10-10
  • 2021-03-16
  • 1970-01-01
相关资源
最近更新 更多