搜尋

首頁  >  問答  >  主體

node.js - node Promise的问题

function getNode(subjectId, nodeId){
    
    request(`http://hr.amiaodaifu.com:50000/1610/questions/${subjectId}/get-children/${nodeId}`, (err, res, body) => {
        console.log(body)
        if(err){
            return console.log("err: ",err)
        } else {
            const content = JSON.parse(body); 
            console.log(content)
            return content.length == 0 ? Promise.resolve(content) : Promise.resolve({
                id: nodeId,
                children: JSON.parse(body)
            })
        }
    })
}

function getTree(subjectId, nodeId){

    getNode(subjectId, nodeId)
        .then(items => {
            return Promise.map(items.children, item => (getTree(item)))
        })
        // .then((children) => ({
        //     id: nodeId,
        //     children
        // }))
}

调用getTree的时候,提示的错误是:

Cannot read property 'then' of undefined

是我的思路有问题吗?

迷茫迷茫2916 天前364

全部回覆(3)我來回復

  • 大家讲道理

    大家讲道理2017-04-17 15:29:47

    首先,request回傳值不是Promise
    其次,你的getNode方法裡也沒有回傳request的結果。

    可以這麼改下:

    function getNode(subjectId, nodeId){
        
        return new Promise((resolve, reject) => {
                request(`http://hr.amiaodaifu.com:50000/1610/questions/${subjectId}/get-children/${nodeId}`, (err, res, body) => {
                if(err){
                    return reject("err: ",err)
                } else {
                    const content = JSON.parse(body); 
                    return content.length == 0 ? resolve(content) : resolve({
                        id: nodeId,
                        children: JSON.parse(body)
                    })
                }
            })
        });
    }

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 15:29:47

    樓上正解, promise用錯地方了

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 15:29:47

    return Promise.map(items.children, item => (getTree(item)))

    有 Promise.map這個函數嗎?怎麼用?

    回覆
    0
  • 取消回覆