node.js - node Promise的问题
本文介绍了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
是我的思路有问题吗?
解决方案
首先,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)
})
}
})
});
}
这篇关于node.js - node Promise的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文