nodejs中关于ES6的promise嵌套写法
我打算实现如下功能:插入主记录,返回insertId,然后插入明细记录
testObject.insertMain(code,name)
.then((result)=>{
var insertId = result.insertId;
testObject.insertDetail(insertId,........)
.then((result1)=>{
testObject.func3(......)
.then(..)
.catch(..)
})
.catch(..)
.catch(..)
这种逻辑似乎又进入了无限嵌套逻辑。求教如何写正确!
ringa_lee2017-04-17 14:42:26
testObject.insertMain(コード,名前)
.then((結果)=>{
var insertId = result.insertId;
insertId を返します。
})
.then(関数(挿入Id){
戻り testObject.insertDetail(insertId);
})
.then(関数(詳細){
コンソール.ログ(詳細);
})
.catch(..)
PHP中文网2017-04-17 14:42:26
testObject.insertMain(コード,名前)
.then((結果1)=>{
return testObject.insertDetailf(result1.id,......)
}).then(関数(結果){
console.log('終了');
}).catch(関数(エラー){
console.log(err.stack);
})
伊谢尔伦2017-04-17 14:42:26
非 Promise 実装を Promise 実装に変換するのは大規模なプロジェクトです。最初の Promise の then
は 2 番目の Promise または 2 番目の then
の値を返し、常に < にすることができます。 code> と が続くので、最後にキャッチするだけです。
xxx.then().then().then().then().catch()
関数 insertMain() {
return Promise.resolve("主な結果");
}
関数 insertDetail(result) {
return Promise.resolve({
メイン: 結果、
詳細: 「詳細結果」
});
}
insertMain().then(result => {
戻り挿入詳細(結果);
}).then(r => {
コンソール.ログ(r);
// { main: 'メイン結果'、detail: '詳細結果' }
r.more = "さらなる結果";
Promise.resolve(r) を返す;
}).then(r => {
コンソール.ログ(r);
// { main: '主な結果',
// 詳細: '詳細結果',
// 詳細: '詳細な結果' }
});