搜尋

首頁  >  問答  >  主體

node.js - promise嵌套的问题,后面一个then用到前面的then的返回值。

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

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

阿神阿神2778 天前582

全部回覆(3)我來回復

  • ringa_lee

    ringa_lee2017-04-17 14:42:26

    雷雷

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:42:26

    雷雷

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 14:42:26

    把非 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' }
    });
    

    回覆
    0
  • 取消回覆