2017-05-05 19 views
0

私は約束を約束しています。しかし、私は正しい順序でそれらを配置する方法を見つけることで多くの苦労してきました。 (1-2) - (3-4)-5または(3-4) - (1)の代わりに(1-2)-5-(3-4) -2)-5(またOK)。だから5日が早すぎると、最後に来るはずです。私は1 + 2 + 3 + 4を配列/リストに入れようとしましたが、次に示すように、5番目の約束を作成して、1-4の実行を待つように指示しています。しかし、順序は間違って、と述べたように...任意のアイデア?特定の順序で約束を実行する

this.promises.push(PROMISE1.then(() => { 

    **Code for PROMISE 1** 

    this.promises.push(PROMISE2.then(() => { 

         **Code for PROMISE 2** 

         }) 
    ); 
})); 

this.promises.push(PROMISE3.then(() => { 

    **Code for PROMISE 3** 

     this.promises.push(PROMISE4).then(() => { 

         **Code for PROMISE 4** 

         }) 
     ); 
    })); 

Promise.all(this.promises).then(() => { 

     **Code for PROMISE 5** 

    }); 
+0

var promises = []; promises.push(method1().then(() => { return method2().then(() => { } }); promises.push(method3().then(() => { return method4().then(() => { } }); Promise.all(promises).then(() => { ... }); 

は、ここでの作業サンプルです約束事3と4はこれに追加されていません。妥協はまだありませんし、すべての行動に影響を与えません。 –

答えて

0

約束ごとにコールバックをプッシュするのではなく、内側の約束を返します。 、Promise.all(this.promises)の実行時には、お使いのアレイにのみPROMISE1とPROMISE2が含まれているため、それが起こる

function delay(time, name) { 
 
    console.log("running", name); 
 
    return new Promise(r => setTimeout(r, time)); 
 
} 
 

 
var promises = []; 
 

 
promises.push(delay(1000, "1").then(() => { 
 
    console.log("1 inner"); 
 
    return delay(500, "1 inner").then(() => console.log("1 inner most")); 
 
})); 
 

 
promises.push(delay(250, "2").then(() => { 
 
    console.log("2 inner"); 
 
    return delay(1000, "2 inner").then(() => console.log("2 inner most")); 
 
})); 
 

 
Promise.all(promises).then(() => console.log("all done!"));

+0

私はこれを動作させることはありません... – MariusJ

+0

あなたはmcveを提供できますか? –

+0

これはかなり複雑なアプリケーションなので、私ができる最も単純な例は質問投稿のものです。もし私がGitHub上のプロジェクトへのリンクがあれば、それは助けになるでしょうか? – MariusJ

関連する問題