活字体で発電しては活字体への私の旅では、コンテキスト
を非同期コードをコンパイルすることはできません、私はブロッキング呼び出しは非同期コード内で行われることはありません必要があることを助言されました。
私はジェネレータも使用しています。なぜなら、ディレクトリトラバーサルを容易にし、スタック領域が不足しないようにするからです。私は(この場合は:
readdir
)非同期コードを組み合わせたとき
しかし、発電機と、コンパイラは収率は唯一のコンパイラが結合することはできないと思われるために私をリードし、発電機内で使用することができることを不平を言いますクロージャ、ジェネレータ、および非同期コードを一括して処理できます。このような状況で推奨されるベストプラクティスは何でしょう
function *yyyymmGenerator(dir: string, props: Props) {
const fs = require("fs");
const yyyy = props.range.getUTCFullYear().toString();
const mm = props.range.getUTCMonth().toString();
const start = `${yyyy}-${mm}`;
const files = fs.readdir(dir, function(err, files) {
for (let i = 0; i < files.length; i++) {
const file: string = files[i];
if (file.localeCompare(start) >= 0) {
const d = `${dir}/${file}`;
yield file;
}
}
});
}
error TS1163: A 'yield' expression is only allowed in a generator body.
質問
?
私は単純にすべてを同期し、コードをブロックするが、プロミス内でコールを「ラップする」と考えても問題ないでしょうか?あなたはそのようなことを行うことができ
がhttp://stackoverflow.com/questions/41326217/js-how-to-use-generator-and-を参照してください。コールバックでの返品 –