3

coでノードスクリプトを作ってみました。うまく機能しますが、スクリプトが完了するまでに大きな遅延があります。(1秒後に「OK」または「Bad」になりましたが、スクリプトは7秒後に終了します)。私が逃したものは何ですか?

co(function *() {
    let errors = yield someCheck(process.argv);
    if (!errors) {
        console.log('Ok');
    } else {
        console.log('Bad');
    }

})(function(e) {

    if (e) {
        console.log(e);
    }
});
4

2 に答える 2

0

あなたの問題を解決すると思いprocess.exit()ます。

于 2016-06-14T07:11:39.880 に答える
0

コードを実行すると typeError が発生します。そこで何をしようとしているのかわかりませんが、co() を呼び出すときにエラー ハンドラを 2 番目の引数として渡すことはできないと思います。エラー処理には then() または catch() を使用する必要があります。

// Here's an example
co(function*() {
  var result = yield Promise.resolve(true);
  return result;
}).then(function(value) {
  console.log(value);
}, function(err) {
  console.error(err.stack);
});

// you can also catch the error
co(function *(){
  // yield any promise 
  var result = yield Promise.resolve(true);
}).catch(onerror);
function onerror(err) {
  // log any uncaught errors 
  // co will not throw any errors you do not handle!!! 
  // HANDLE ALL YOUR ERRORS!!! 
  console.error(err.stack);
}
于 2016-06-07T14:52:36.183 に答える