だから私はこのコードを持っており、非同期/待機の構文を完全に理解しようとしています。以下は 約束する コードのバージョン:
_function callToolsPromise(req) {
return new Promise((resolve, reject) => {
let pipshell = 'pipenv';
let args = ['run', 'tools'];
req.forEach(arg => {
args.Push(arg)
});
tool = spawn(pipshell, args);
tool.on('exit', (code) => {
if (code !== 0) {
tool.stderr.on('data', (data) => {
reject(data);
});
} else {
tool.stdout.on ('data', (data) => {
resolve(JSON.parse(data)):
});
}
});
})
}
_
python tools/__ main__.pyで実行したいコードがあるので、これが "pipenv"を呼び出す理由です。
ここにそれを書く私の試みがあります 非同期/待機 方法(実際に機能します):
_async function callToolsAsync(req) {
let pipshell = 'pipenv';
let args = ['run', 'tools'];
req.forEach(arg => {
args.Push(arg)
});
let tool = spawn(pipshell, args);
for await (const data of tool.stdout) {
return data
}
}
_
しかし、私がしたのは、_for await...
_ループがある誰かの例からコピーして貼り付けることだけでした。
したがって、私は実際にそれを理解できるように、同じコードを書き直そうとしてきましたが、今では何日も失敗しています。
他の方法でこのコードを書く方法はありますか 非同期/待機 _for await...
_ループを使用しない方法?
また、_.then
_構文を使用する以外は、データにアクセスする方法がわかりません。
_callToolsAsync(['GET','mailuser'])
.then(console.log)
_
他にどのようにしてresolve(data)
から「データ」にアクセスしますか?
どうもありがとう。
await-spawn
を使用してこの問題を解決しました
https://www.npmjs.com/package/await-spawn
child_process.spawn() wrapped in a Promise for doing async/await.