es6中Promise和async结合使用,是否可优化
在Promise对象内部使用await是否可优化
// a.js
const PublicClass = {
list: async () => {
... // 此处业务逻辑等待时间比较长,但最终会有一个返回结果
}
}
module.exports = {
test: async () => {
// 此处在promise的回调函数加上async是否可优化
return new Promise(async(resolve, reject) => {
cosnt res = await PublicClass.list()
resolve(res)
})
}
}
上面的写法可以达到预期的结果,我现在想问一下,有没有可优化的写法。
业务需求PublicClass.list是必须有async的,若直接用以下写法无法达到预期效果
// a.js
const PublicClass = {
list: async () => {
... // 此处业务逻辑等待时间比较长,但最终会有一个返回结果
}
}
module.exports = {
test: async () => {
cost res = await PublicClass.list()
return res
}
}
我现在用的是谷歌的puppeteer,具体的代码如下:
// 这是文档给的例子
const puppeteer = require('puppeteer');
puppeteer.launch().then(async browser => {
const page = await browser.newPage();
await page.goto('https://baidu.com');
await browser.close();
});
const puppeteer = require('puppeteer');
const PublicClass = {
list: async () => {
try {
const browser = await puppeteer.launch()
const page = await browser.newPage();
await page.goto('https://baidu.com');
await browser.close();
} catch (err) {
console.log(err)
}
}
//
module.exports = {
test: async () => {
return new Promise(async (resolve, reject) => {
cosnt res = await PublicClass.list()
resolve(res)
})
}
}
若不在Promise的回调里使用async,是否有更好的写法,请赐教
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为什么不在list里面返回一个promise?
---------分割线-------------
对于async/await 的使用我来补充一下
async/await 只是Generator实现的语法糖而已,而Generator的语法是用
*
来修饰函数,用yield来修饰步骤,但是yield只支持返回Promise或者Thunk函数,所以如果你需要await一个函数,那个被await的这个函数不一定需要async来申明,而只要返回一个Promise就好了。所以说只要你返回的是一个promise,那么就可以在任何async函数中被await,这一点希望题主可以明白,所以为什么我回答说,为什么不在list这个函数里面返回一个promise