検索

ホームページ  >  に質問  >  本文

node.js - nodejs の co モジュールが自己実行する yield

私のコードは次のとおりです

リーリー

予想される実行結果、コンソールには 1、2、3 が出力されるはずです

しかし、プログラムを実行すると、エラーが報告されました

これは私のものだと言うべきですyield后面应该跟function但是上面的demo中我的yield后面跟的已经是function 期待される出力がないのはなぜですか?

2 番目の書き方:

リーリー

coすでにジェネレーター関数を受け入れています。上記の書き方ではコンソールに1,2,3を出力できません

伊谢尔伦伊谢尔伦2755日前689

全員に返信(4)返信します

  • 漂亮男人

    漂亮男人2017-05-16 13:37:43

    あなたのyield后面跟的不是are这个函数,而是are执行后的返回值。
    其实它等于yield undefined、これがエラーの原因です。

    返事
    0
  • 某草草

    某草草2017-05-16 13:37:43

    リーリー

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-16 13:37:43

    通常の機能はサポートされていません

    返事
    0
  • PHPz

    PHPz2017-05-16 13:37:43

    見てくださいco库的源码就好,报错是co库报出来的,原因是因为楼上说的返回了undefined、具体的なエラーコードは次のとおりです:

    リーリー

    isPromise检测是否为Promiseco库先尝试将yield后转换为Promise,具体参见toPromise機能:

    リーリー

    undefined,所以最终toPromise返回了undefined,检测不是Promise に渡されたため、エラーがスローされました。

    出力がない理由については1,2,3的原因,是因为yield后面的关系,yield后面是要接受函数作为参数,并且要执行这个函数的,所以yield通常、その後に非同期操作が続きます。この関数はコールバック関数ですが、その関数なので、次のように変更してください:

    リーリー

    返事
    0
  • キャンセル返事