这里promise返回的是什么呢?有点晕
来源:6-6 API对接mysql(博客列表)
猪脚面线
2019-06-19
const handleBlogRouter = (req, res) => {
const method = req.method;
const id = req.query.id || "";
// 获取博客列表
if (method === "GET" && req.path === "/api/blog/list") {
// 获取参数
const author = req.query.author || "";
const keyword = req.query.keyword || "";
return getList(author, keyword).then((listData) => {
return new SuccessModel(listData);
})
}
handleBlogRouter这个函数的返回值是一个promise,那么返回的是getList函数异步执行后的结果,也就是listData;之后再返回被SuccessModel(listData)包裹后的对象对吗?
问题是app.js里面的blogResult是异步后的结果,这个结果也是promise吗(因为下面被then了。。)
const blogResult = handleBlogRouter(req, res);
if (blogResult) {
blogResult.then(blogData => {
res.end(JSON.stringify(blogData));
})
return
}
这个环节的promise传递有点晕?老师能帮忙捋一下异步函数的返回吗~
写回答
3回答
-
qq_漫漫_0
2019-07-29
promise 的then方法默认情况下返回一个resolve状态的新的promise,而且resolve函数的参数是then里面return的值,所以最终结果是返回一个promise,resolve用 SuccessModel格式化了的值
112019-07-29 -
慕设计3041572
2019-07-05
Promise的实例的then方法是定义在原型对象Promise.prototype上的,then方法的第一个参数是Resolved状态的回调函数,第二个参数(可选)是Rejected状态的回调函数
then方法返回的是一个新的Promise实例,因此可以采用链式写法,如下
getJSON('/posts.json').then(function(json) { return json.post }).then(function(post) { // ... })
前一个回调函数的返回结果会作为参数传递给下一个回调函数
00 -
猪脚面线
提问者
2019-06-19
是不是这样:router里面返回的promise是getList
return getList(author, keyword).then((listData) => { return new SuccessModel(listData); })
这个异步函数是再app.js里面执行?下面这个blogResult其实就是getList这个异步函数的引用,等到下面blogResult被then的时候才去执行异步函数
const blogResult = handleBlogRouter(req, res); if (blogResult) { blogResult.then(blogData => { res.end(JSON.stringify(blogData)); }) return }
012019-06-19
相似问题