高地のリクエストストリームが正しく渡されない

Risto Novik

requestすでに空の配列をマップするために渡すときに、nodejsストリームを動作させるのに問題があります。

var _       = require('highland'),
    fs      = require('fs'),
    request = require('request');

// This works but not using the stream approach
// function get(path) {

//     return _(function (push, next) {

//         request(path, function (error, response, body) {
//             // The response itself also contains the body
//             push(error, response);
//             push(null, _.nil);
//         });
//     });
// }

var google = _(request.get('http://www.google.com'));

google
// res is empty array
.map(function (res) {
    // console.log(res);
    return res;
})
// res is empty array
.toArray(function (res) {

    console.log(res);
});
グレンジャミン

request()モジュールは、一種の古いスタイルのストリームを使用します。コードStreamモジュールからストリームプロトタイプの.pipe()メソッドを呼び出します。

stream.Stream.prototype.pipe.call(this, dest, opts)

https://github.com/mikeal/request/blob/11224dd1f02e311afcc11df8a8f0be1d9fb2bf83/request.js#L1310

実際の問題は、ノードのコアストリームモジュールの次のチェックまで追跡しました。

function ondata(chunk) {
  if (dest.writable) {
    if (false === dest.write(chunk) && source.pause) {
      source.pause();
    }
  }
}

https://github.com/joyent/node/blob/master/lib/stream.js#L50

上記の例で次の手順を実行することで、パッチを適用できます。

var google = _(request.get('http://www.google.com'));
google.writable = true;

https://github.com/caolan/highland/pull/42でこれを適切に修正するためにプルリクエストを発行しましたこれはマージされたため、バージョン1.14.0以降バグは再現できなくなります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ブロックストリームが正しく更新されない

分類Dev

APIリクエストのLaravelオプションパラメータが正しく認識されない

分類Dev

リストアイテムが正しく表示されない

分類Dev

wxgladeリストツリーが正しく表示されない

分類Dev

Javaリンクリストイテレータエラー、出力が正しく表示されない

分類Dev

AHKのコピーアンドペーストスクリプトが正しくコピーされない

分類Dev

Intellijが正しくエクスポートされない

分類Dev

PRISMWPFカスタムインタラクションリクエスト-動的ビューコントロールが正しく表示されない

分類Dev

BASH Base64エンコードスクリプトが正しくエンコードされない

分類Dev

マトリックスが正しく印刷されない

分類Dev

MySQLスクリプトが正しく入力されない

分類Dev

Dockerホストボリュームが正しくマウントされないのはなぜですか?

分類Dev

ClaudiaJSフレームワークでリクエストオブジェクトが正しく解析されない

分類Dev

SwiftのネストされたクエリのFirebaseが正しく機能しない

分類Dev

フォームが正しく検証されない理由についてサポートをリクエストする

分類Dev

グローバル ポインター (リンク リストの先頭) が正しく更新されない

分類Dev

Python リクエスト: CSRF トークンがないか正しくない

分類Dev

サムネイルがライトボックスギャラリーに正しく表示されない

分類Dev

抽出された正規表現値がJmeterの次のPOSTリクエスト本文に渡されない

分類Dev

リストが正しくスライスされない

分類Dev

StripeElementクイックスタートの例が正しくレンダリングされない

分類Dev

Postリクエストで422エラーが発生しましたが、リクエストが正しく送信されていると思います

分類Dev

エンティティフレームワーク、Linq、「SQLステートメントの一部が深くネストされています。クエリを書き直すか、より小さなクエリに分割してください。」

分類Dev

リクエストフォーカスが正しく機能しない

分類Dev

Rubyクラスの属性が正しくクエリされない

分類Dev

MysqlクエリIFステートメントが正しく機能しない

分類Dev

jqPlotの軸と凡例がエクスポートされた画像で正しくレンダリングされない

分類Dev

ページの読み込み時にスクリプトが正しく実行されない

分類Dev

python-コンストラクターにリストを渡す、引数の数が正しくないエラー

Related 関連記事

  1. 1

    ブロックストリームが正しく更新されない

  2. 2

    APIリクエストのLaravelオプションパラメータが正しく認識されない

  3. 3

    リストアイテムが正しく表示されない

  4. 4

    wxgladeリストツリーが正しく表示されない

  5. 5

    Javaリンクリストイテレータエラー、出力が正しく表示されない

  6. 6

    AHKのコピーアンドペーストスクリプトが正しくコピーされない

  7. 7

    Intellijが正しくエクスポートされない

  8. 8

    PRISMWPFカスタムインタラクションリクエスト-動的ビューコントロールが正しく表示されない

  9. 9

    BASH Base64エンコードスクリプトが正しくエンコードされない

  10. 10

    マトリックスが正しく印刷されない

  11. 11

    MySQLスクリプトが正しく入力されない

  12. 12

    Dockerホストボリュームが正しくマウントされないのはなぜですか?

  13. 13

    ClaudiaJSフレームワークでリクエストオブジェクトが正しく解析されない

  14. 14

    SwiftのネストされたクエリのFirebaseが正しく機能しない

  15. 15

    フォームが正しく検証されない理由についてサポートをリクエストする

  16. 16

    グローバル ポインター (リンク リストの先頭) が正しく更新されない

  17. 17

    Python リクエスト: CSRF トークンがないか正しくない

  18. 18

    サムネイルがライトボックスギャラリーに正しく表示されない

  19. 19

    抽出された正規表現値がJmeterの次のPOSTリクエスト本文に渡されない

  20. 20

    リストが正しくスライスされない

  21. 21

    StripeElementクイックスタートの例が正しくレンダリングされない

  22. 22

    Postリクエストで422エラーが発生しましたが、リクエストが正しく送信されていると思います

  23. 23

    エンティティフレームワーク、Linq、「SQLステートメントの一部が深くネストされています。クエリを書き直すか、より小さなクエリに分割してください。」

  24. 24

    リクエストフォーカスが正しく機能しない

  25. 25

    Rubyクラスの属性が正しくクエリされない

  26. 26

    MysqlクエリIFステートメントが正しく機能しない

  27. 27

    jqPlotの軸と凡例がエクスポートされた画像で正しくレンダリングされない

  28. 28

    ページの読み込み時にスクリプトが正しく実行されない

  29. 29

    python-コンストラクターにリストを渡す、引数の数が正しくないエラー

ホットタグ

アーカイブ