node.js - 关于co用法的困惑
PHPz
PHPz 2017-04-17 15:29:26
0
2
559

node小白,今天学习了下用Node写命令行工具。

然后有个TJ大神写的co包:

    co(function* (){
        yield setTimeout(function() {
            console.log(1);
        }, 5);
        
        yield setTimeout(function() {
            console.log(2);
        }, 1);
    });

最后这段代码执行的时候只输出了1。为什么没有输出2呢?

PHPz
PHPz

学习是最好的投资!

全員に返信(2)
小葫芦

あなたの使用法は仕様に準拠していません。Co では、Promise、ジェネレーター、配列、オブジェクトの生成は許可されていますが、通常の関数の生成は許可されていません。
最初の setTimeout を生成するときは、関数は正常に実行されますが、実行後にエラーが報告されます:

リーリー

エラー報告は当然中断されるため、コードは実行を継続しません。なぜ上記のエラーが報告されるのかについては、ソースコードを注意深く読めば明らかです。

いいねを押す +0
刘奇

tj/co は完璧ではありません。hprose では tj/co の代わりに co を使用できます。紹介記事は次のとおりです:

https://segmentfault.com/a/11...

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート