【发布时间】:2017-06-23 03:13:33
【问题描述】:
我有一个非常简洁的方法来使用 Node V8 Promisfy() 和异步函数来执行“await runJob()”。我遇到的问题是我需要 childProcess.execFile() 返回的子对象的句柄。所以现在我有一个非常混乱的解决方案......但我显然对此并不满意。关于如何清理它的任何想法?
之前:
const invoke = util.promisify(childProcess.execFile)
async runJob() {
try {
const std = await invoke(this.FMEPath, ["PARAMETER_FILE", this.fmeParamFile], { cwd: this.root })
this.stderr = std.stderr
this.stdout = std.stdout
} catch (err) {
this.errors++
logger.addLog('error', "FMEjob.runJob - childProcess.execFile failed: %s", err.message, { paramFile: this.fmeParamFile, error: err })
}
}
之后:
async runJob() {
return new Promise((resolve, reject) => {
this.child = execFile(this.FMEPath,
["PARAMETER_FILE", this.fmeParamFile],
{ cwd: this.root },
(err, stdout) => {
if (err) {
this.errors++
logger.addLog('error', "FMEjob.runJob - childProcess.execFile failed: %s", err.message, { paramFile: this.fmeParamFile, error: err })
return reject(false)
} else {
this.stderr = stderr
this.stdout = stdout
resolve(true)
}
})
})
}
【问题讨论】:
标签: javascript node.js promise async-await