問題タブ [q]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
8802 参照

javascript - 未処理の拒否理由 (空にする必要があります)

Q で promises パターンに入り、コンソールに「[Q] Unhandled reject reason (shoes be empty)」という警告が表示され続けます。私は何を間違っていますか?

http://jsfiddle.net/FpyDr/1/

0 投票する
1 に答える
2940 参照

javascript - スタンドアロンスクリプトのjavascript node.js、promiseのブロック/待機

node.js に次のような単純なプログラムがあります。

このプログラムは、(Web ブラウザではなく) スタンドアロン スクリプトで実行することを意図しており、実行順序が重要なシーケンシャル プログラムです (たとえば、step6 は step5 の後に実行する必要があります)。

問題は、step3() が非同期関数であり、値 'o' が実際には特定のコールバックに渡されるため、次のようにプログラムを変更する必要があることです。

step3 で計算された 'o' 値に依存するため、コールバック関数から step4 を呼び出すことは理にかなっています。しかし、step5 と step6 関数は 'o' に依存しないため、実行順序を保持するためだけにそれらをそのコールバック関数に含める必要があります: step3、次に step4、次に step5、次に step6。

これは私には本当に悪いように聞こえます。これはシーケンシャルなプログラムなので、step3 を同期関数に変換したいと思います。

これを行う方法?私はこのようなものを探しています(例:Qを使用):

これを行う方法?

ps: 同期または非同期の使用には長所と短所があり、これは非常に興味深い議論です。ただし、それはこの質問の目的ではありません。この質問では、約束 (または同等のもの) が満たされるまでブロック/待機する方法を尋ねています。同期/ブロックが良いかどうかについての議論を始めないでください。

0 投票する
2 に答える
1541 参照

javascript - node.js Q を使用してチェーン実行中に promise を挿入する方法は?

RSS URL を要求し、リンクを解析してから、各リンクを要求する必要があるプロミス チェーンがあります。最初の部分はうまく機能します。ただし、解析された各リンクを要求する「約束を挿入する」方法を理解するのに苦労しています。

リンク URL の単純な配列を生成することから始めましたが (推奨される方法)、それを機能させることができませんでした。このコードは、各 URL を要求するプロミスの配列を生成するようになりましたが、それを機能させる方法もわかりません。おそらく私はQ.all()を使用する必要がありますが、それは所定の機能のためのようですか?

0 投票する
2 に答える
466 参照

javascript - この解決された Q promise が valueOf() に promise で応答するのはなぜですか?

AJAX リクエストから値が取得されるオブジェクトがあります。私はそれをプロミスに変換していますが、予期しないプロミスでいくつかの動作に遭遇しています。ここに同じ動作を示す例がありますが、AJAX 要求を Q.all() に置き換えています。

Thing はロード時に実行され、「refresh」を実行して最初に自身を設定します。「フェッチ」関数の要点は、私の非同期リクエスト (この場合は Q.all) が配列の約束を返すことですが、私が本当に欲しいのは配列内の要素の約束です (たとえば、「a」または「b」の約束)。したがってThing.fetch(1)、「b」の約束を返すことを期待しています。

Thing.fetch(1)はプロミスをThing.fetch(1).valueOf()返しますが、そうすると、期待していた「b」ではなく、プロミスを返します。私が行った場合:

コンソールに「b」と出力されます。

実行Thing.promise.valueOf()すると配列が返されるため、「fetch」を呼び出すと約束が解決されます。

だから私の質問は、「フェッチ」によって返されたプロミスで呼び出したときに valueOf() が値を返さないのはなぜですか?

0 投票する
4 に答える
14471 参照

node.js - Qで可変数の約束を順番に連鎖させる方法は?

Q で任意の数のプロミスをチェーンするのを見てきました。私の質問は違います。

それぞれが非同期的に返される可変数の呼び出しを順番に行うにはどうすればよいですか?
シナリオは一連の HTTP 要求であり、その数とタイプは最初の HTTP 要求の結果によって決まります。

私はこれを簡単にやりたいと思っています。

次のようなことを示唆するこの回答も見ました。

...しかし、そのように itemsToProcess をループするのは厄介なようです。または、再帰を抽象化する「ループ」と呼ばれる新しい関数を定義します。より良い方法は何ですか?