私はジェネレータを使って非同期操作(readdir)を実行し、その結果を出力しようとしています。ここでジェネレータと約束 - 結合しようとしています
は私のコードです:
var dirname = //some directory name;
function *gen(done) {
let exercises = yield fs.readdir(dirname, done);
console.log(exercises);
}
let G = gen(function(err, res) {
G.next(res);
})
G.next();
これは私が約束して発電機を組み合わせて、非同期操作のために、学んだことから、
の作品、版画[ 'README.md'、 'sol.js']より良い(信頼の問題)。これは本当ですか、私は誤解しましたか?
このように、私は約束を発電機と組み合わせようとしました。私はKyle SimpsonのAsynquence libraryを使用しました。
const fs = require('fs');
const ASQ = require('asynquence-contrib');
function readDirectory(dir) {
return ASQ(function(done){
fs.readdir(dir,done);
});
}
function *genProm() {
let exercises = yield readDirectory(dirname);
console.log(exercises);
}
ASQ().runner(genProm);
今、結果は [ヌル、[ 'README.md'、 'sol.js']]
である私の質問は以下のとおりです。
- なぜ結果がここに異なっています?ヌルはどこから来ますか?そしてどうすればそれを取り除くことができますか?
- ここに約束と発電機を組み合わせることは理にかなっていますか?
"*私は約束を発電機と組み合わせようとしました*" - しないでください。これは2015年です。これはES6で動作するハックです。今日は、 'async' /' await'構文を使用しなければなりません。 – Bergi