【发布时间】:2018-01-28 12:42:47
【问题描述】:
我正在发出一个返回分页数据的请求,所以我想递归调用一个函数,直到我拥有所有数据页面,如下所示:
router.get("/", (req, res) => {
doRequest(1, [])
.then(result => {
res.status(200).send(result);
})
.catch(error => {
console.error(error);
res.status(500).send("Error from request");
});
});
function doRequest(page, list){
let options = {
uri : "www.example.com",
qs : { "page" : page }
};
request(options)
.then((results) => {
list.push(results);
if(page === 2){
return Promise.resolve(list);
} else {
return doRequest(++page, list);
}
})
.catch((error) => {
return Promise.reject(error);
});
}
我的路线会立即返回Cannot read property 'then' of undefined,因此doRequest() 显然是立即返回undefined,而不是在列表准备好时返回。我是新的承诺,所以我确定我错过了一些非常简单的东西。
【问题讨论】:
-
doRequest没有返回任何东西......你的意思是return request在doRequest中返回一个你可以.thenon 的承诺吗?
标签: javascript recursion promise es6-promise