1
がPromise.all.catch
上の結果オブジェクトを取得する方法はあり約束で結果配列を得ることができますか?は、どのように私はすべてのエラー
私は、データベース内の2つの挿入、MySQLデータベースに1つ、MongoDBのデータベース内のいずれかを実行したいと思います。それらのいずれかが失敗した場合は、もう一方を削除したいと思います。ここで
は、しかし、あなたが後にそれらをキャッチする前に、単一の約束を操作することができ、いくつかの擬似コードconst mysqlPromise = mysql.query('insert to table')
const mongoPromise = mongodb.insert('insert to collaction')
Promise.all([mysqlPromise,mongoPromise])
.then(result =>{
})
//i know it doesnt work that way but this is what i need to achive
.catch((err,result) =>{
if(err[0] && err[1]){
//do nothing
return
}
if(err[0]){
mongodb.delete({_id:result[1].insertId})
}
else{
mysql.query('delete from table where id = 'result[0].lastInsertId)
}
})
また、削除にも失敗したらどうしますか? :) – smnbbrv
私はx秒ごとに再試行するループを行うことができますが、それは完璧ではありませんが、私はこのケースが起こるチャンスが低くなるということで生きることができます。私が達成しようとしているのは2つの異なるdbsでの取引です。これは私が考えることができる最も近いものです –
[すべてのES6の約束が完了するまで待って、拒否された約束を待つ](https://stackoverflow.com/q/31424561)/1048572)これはあなたが個々の結果を観察することを可能にする – Bergi