node.js - promise嵌套的问题,后面一个then用到前面的then的返回值。
阿神
阿神 2017-04-17 14:40:26
0
3
581

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(..)

这种逻辑似乎又进入了无限嵌套逻辑。求教如何写正确!

阿神
阿神

闭关修行中......

全部回覆(3)
洪涛

雷雷

伊谢尔伦

把非 Promise 實現改造成 Promise 實現是個巨大的工程。如果都是 Promise 實作就好辦了,第一個 Promise 的 then 回傳就是第2個 Promise 或第二個 then 的值,就可以一直 then 下去了,最後來 catch 就行。

xxx.then().then().then().then().catch()

function insertMain() {
    return Promise.resolve("main result");
}

function insertDetail(result) {
    return Promise.resolve({
        main: result,
        detail: "detail result"
    });
}


insertMain().then(result => {
    return insertDetail(result);
}).then(r => {
    console.log(r);
    // { main: 'main result', detail: 'detail result' }
    r.more = "more result";
    return Promise.resolve(r);
}).then(r => {
    console.log(r);
    // { main: 'main result',
    //  detail: 'detail result',
    //  more: 'more result' }
});
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板