普通接口调用写法.then() 或者 使用es6的 async/await 异步转同步
// function Index() { // 普通调用嵌套写法 // console.time() // const p1 = new Promise((resolve, reject) => { // console.log('这里是p1') // setTimeout(() => { // resolve('这里是p1的返回') // }, 1000) // }).then((r1) => { // new Promise((resolve, reject) => { // console.log('这里是p2') // setTimeout(() => { // resolve('这里是p2的返回') // }, 1000) // }).then((r2) => { // console.log(r1) // console.log(r2) // console.timeEnd() // }) // }) // } //异步转同步 async function Index2() { console.time() const p1 =await new Promise((resolve, reject) => { console.log('这里是p1') setTimeout(() => { resolve('这里是p1的返回') }, 1000) }) const p2 =await new Promise((resolve, reject) => { console.log('这里是p2') setTimeout(() => { resolve('这里是p2的返回') }, 1000) }) console.log(p1) console.log(p2) console.timeEnd() } //Index(); Index2();
用时2
使用Promise.all()来实现调用
async function Index() { console.time() const p1 = new Promise((resolve, reject) => { console.log('这里是p1') setTimeout(() => { resolve('这里是p1的返回') }, 1000) }) const p2 = new Promise((resolve, reject) => { console.log('这里是p2') setTimeout(() => { resolve('这里是p2的返回') }, 1000) }) Promise.all([p1, p2]).then((val) => { console.log(val) console.timeEnd() }) //当然也可以使用 async/await写法 /* const p = await Promise.all([p1, p2]) console.log(p); console.timeEnd(); */ //补充说明:如果我们的接口已经套上了一层 promise 便已经实现了同时执行异步的条件 //下面这种写法耗时和Promise.all也是一样的,但是嵌套多了可能代码就不太优雅了 /* p1.then((r1) => { p2.then((r2) => { console.log(r1) console.log(r2) console.timeEnd() }) }) */ } Index()
用时1s
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。