に移動する前に解決を待っている:JavaScriptの約束 - 私は次の操作を実行する必要があり
- は、内部関数(getLinesを())を呼び出して、「行」のリストを取得します。
- 、最初の行を選択し、前の動作が完了した後アクション
- を行い、次の行を選択し、すべての行(ユーザに応じて3-20)ため
を同じアクション
App.Lines = response.data;
for (var _i = 0; _i < App.Lines.length; _i++) {
var makeCallPromise = new Promise(
function(resolve, reject) {
Session.connection.ol.makeCall(App.Lines[_i], callBackFunction(response) {
//this can take up to 30 seconds to respond...
resolve(response.data);
}, errorCallBackFunction(message) {
reject(message.error);
}, bareJid);
}
)
makeCallPromise.then(function(fulfilled) {
console.log("PROMISE WORKED!!!!!", fulfilled);
})
.catch(function(error) {
console.log("PROMISE FAILED!!!!!", error);
});
}
私の希望は、それがループを続けて前にループが約束を解決するのを待つというものであった、しかし、そうではありません。 私の質問は、解決が完了するまでループを停止することができるかどうかです。 注 - 私は約束のためにbluebird JSライブラリを使用しています。 ありがとうございました!配列内の次の要素に
私は、何らかの形で約束を「返す」必要があると思います。この場合のように、あなたの約束で使う主な句が「実現」されます。 – ZombieChowder
全体をループする代わりに、makeCallPromiseをループし、それらの約束を配列にプッシュします。次に、Promise.all(配列)を使用して、promise.allの後に 'then()'を追加します。その結果、最初の 'then()'が呼び出される前にすべてのpromsが解決されるので、すべてのデータが再びループすることができます。あるいは、ループをまったく使用しないでくださいが、前者の解決後に次のmakeCallPromiseを作成してください。 – Shilly
@ Shillyありがとう、私はpromise.each()とmarvel308によって提供される答えでこれを使ってみました。私の反応は、私がやったことと何が起こったのかです。 – Gary