Node.js送信後にヘッダーを設定することはできません。別のXHRリクエスト内でXHRリクエストを開始する場合

StackOverflow https://stackoverflow.com/questions/9332698

質問

Node.jsは、以下のjQuery / ZeptoXHRパターンに似た処理を実行するクライアントコードを処理できません。 ジェネラコディセタグプレ

他のフレームワーク内で以前にこれ(別のXHRリクエスト内でXHRリクエストを開始する)パターンを実行しました。 Node.jsエラー:できます 'について読みました送信後にヘッダーを設定します。Node.jsサーバーのイベントベースのモデルがどのように機能するか。言い換えると、最初のXHRリクエストはres.end()を呼び出していないため、2番目のXHRリクエストが呼び出されるとNode.jsは(連続ループで)文句を言います。

私の質問は次のとおりです。クライアント側でXHRリクエストをチェーンする代わりのパターンを推奨できる人はいますか? Node.jsサーバー側で既存のクライアント側パターンを維持するためにできることはありますか?

承認された回答に基づく更新
間違いは確かに私自身のサーバー側のコードにあります。単純な検証関数がエラーをスローしていましたが、それをキャッチすると、res.end()のみが呼び出されました。何らかの理由で、res.end()を呼び出すと仮定すると、関数の実行がすぐに停止します。この場合、「return」を挿入すると、JSONメッセージをクライアントに送信した直後に実行が停止します。 ジェネラコディセタグプレ

役に立ちましたか?

解決

問題はあなたが思っていることではありません。コールバックが原因で、2つのXHRは並列ではなくシリアルで発生します。最初のコールバックのsuccessコールバックは、最初のリクエストのリクエスト/レスポンスプロセス全体が完了するまで起動しません(node.jsはすでにresponse.end()を呼び出しており、ブラウザはレスポンスを受信して解析しています)。その後、2番目のXHRが開始されます。あなたが持っているクライアント側のAJAXパターンは問題ありません。node.jsやその他のウェブサーバーでも同様に機能します。

問題はサーバー側のnode.jsコードにありますが、これはノードのバグや制限ではなく、プログラミングの間違いです。サーバー側のコードを投稿してください。追跡をお手伝いします。node.jsの初心者が、単純なコーディングミスでこのエラーに遭遇することは非常に一般的です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top