私は、連鎖配列を約束するために成長してきました。各約束はこれを読み、信じられないほど簡単です長いようなプロミスチェーンを読みやすくする
myArray.map(x => convertX)
.filter()
.whatever()
.etc()
ラインがあるとき、それは約束チェーンを読むために非常に簡単です。しかし、カスタム関数を使って約束チェーンを作成すると、それはずっと面倒です。
database.query(first query)
.then(results => {
// do stuff
// do more
// even more
return database.query(second query)
})
.then(results => {
// rinse and repeat
})
.catch(err => {
// error handling
})
これはわかりやすいですが、将来の約束がさらに伸びると、やや大きめになります。私はそれぞれの約束を自分自身のものにすると、プロセスを合理化して、コードがこのように見えるようにすることができます(これは、1000倍の読みやすさです)。
db.query(first query)
.then(storeFirstQuery)
.then(secondQueryAndStoreIt)
.then(thirdQueryAndStoreIt)
.catch(errHandlingFunction)
この方法で、私は次の1つの約束から渡される値を操作することなく、機能を並べ替えることができます。約束が別のものの結果を使用している場合、それは他のものの後にある必要がありますが、すぐ後ではありません。そうすれば私はどこにでも約束をこっそり入れることができます。
しかし、これは私の約束がそれぞれの約束の範囲外の変数を使用するために必要です。これを行うには、試して真の方法がありますか?
編集 - これを行うための最善の方法ですが、私はHerokuの上のノードを実行していることだし、それはまだサポートされていないasync
/await
ようだ:/
あなたが選んだアプローチが一番好きではないようです。わかりません、それは読みやすいJavaScriptなので、読みやすい英語です。それは["コールバックライト"](http://stackoverflow.com/a/42380006/918910)です。 – jib