0

類似の質問はすでにhereと尋ねられましたが、すべての約束が終わったときに結果を得る方法には興味があります。bluebirdjsの使用がすべて終了したら、私は約束を連続的に連鎖して結果を得ることができますか?

私のコードでは、デバイスにファイルをインストールしています。これは、順番に実行する必要があり、をインストールしてください。は約束をしています。私は取得を実行した後

Promise.each(files, function(file, index){ 
    self.adbClient.install(device, file.path) 
    .then(function() { 
     console.log('%s installed on device %s', file.name, device) 
    }) 
    .catch(function(err) { 
     console.error('Something went wrong when installing %s on %s: '+ err.stack, file.name, device) 
    }) 
    }).then(function() { console.log("All done"); }) 
    .catch(function(err) { console.log("Argh, broken: " + err.message); }) 

私は すべてすべての後メッセージを成し遂げることができますどのように
All done 
first-file.apk installed on device LGV400d1d1a81d 
second-file.apk installed on device LGV400d1d1a81d 

上記の例で、私は次のコードに付属example from BluebirdJS documentationに触発さ

インストールが完了しましたか?

答えて

0

正しいドキュメントhttp://bluebirdjs.com/docs/api/promise.each.htmlによると - イテレータ関数が約束またはthenableを返す場合

、そして約束の結果は次の反復

そうに進む前に、待たれます次のようにreturnを追加する単純なケースです。

Promise.each(files, function(file, index){ 
    return self.adbClient.install(device, file.path) 
// ^^^^^^ 
// rest of your code 
+0

ありがとうございました。それは欠落していたreturn文でした:-) – karlitos

+0

@karlitos - おそらくあなたが「間違った」例に従っていたためです:p –

関連する問題