<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
簡介:
promise
是什麼,它可以說是非同步程式設計的一種解決方法,就拿傳統的ajax發請求來說,單個還好,如果是一個請求回來的資料還要被其他請求呼叫,不斷地巢狀,可想而知,程式碼看起來是很亂的,promise主要是為了解決這種情景而出現的。
promise
物件,通過new Promise().then()
執行下一步驟操作。axios is a promise based HTTP client for the browser and node.js
。也就是說,使用axios發出請求,難免涉及promise。Promise
建構函式的引數是一個函數,函數裡面的程式碼是非同步的,即Promise
裡面的操作,和Promise()
外面的操作時非同步"同時"進行的。Promise中的函數的第一個引數是回撥函數,resolve
用來觸發then裡面的程式碼,第二個引數是回撥函數,reject用來觸發catch中的程式碼,throw new Error()
;也可以觸發catch,
resolve和reject是兩個回撥函數,呼叫resolve會觸發then,reject會觸發catch:
<script> new Promise((resolve, reject) =>{ setTimeout(() =>{ //成功的時候呼叫resolve resolve('成功data') //失敗的時候呼叫reject reject('error message') }, 1000) }).then((data) =>{ //處理成功後的邏輯 console.log(data);//這個data 是接收的resolve引數-- }).catch((err) =>{ console.log(err); }) </script>
promise
鏈中,只要任何一個promise被reject
,promise鏈就被破壞了,reject之後的promise都不會再執行,而是直接呼叫.catch
方法。p1().then(p2).then(p3) .then(function(data) { console.log('data: ' + data); }) .catch(function(error) { console.log('error: ' + error); }); function p1() { return new Promise(function(resolve, reject) { console.log('p1 resolved'); resolve(123); }); } function p2() { return new Promise(function(resolve, reject) { console.log('p2 rejected'); reject(456); }); } function p3() { return new Promise(function(resolve, reject) { console.log('p3 resolved'); resolve(789); }); }// 執行結果p1 resolvedp2 rejectederror: 456
Promise
建構函式的引數是一個函數,函數裡面的程式碼是非同步的,即Promise
裡面的操作,和Promise()
外面的操作時非同步"同時"進行的。此外,只要在函數前面加上async 關鍵字,也可以指明函數是非同步的。
async關鍵字實際是通過Promise
實現,如果async 函數中有返回一個值 ,當呼叫該函數時,內部會呼叫Promise.solve()
方法把它轉化成一個promise 物件作為返回,但如果timeout 函數內部丟擲錯誤,那麼就會呼叫Promise.reject()
返回一個promise 物件。若某函數呼叫一個非同步函數(比如內部含有primise),該函數應用async修飾。
await表示“等待”,修飾返回promise 物件的表示式。注意await 關鍵字只能放到async 函數裡面。
function doubleAfter2seconds(num) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(2 * num) }, 2000); } ) }//寫一個async 函數,從而可以使用await 關鍵字, await 後面放置的就是返回promise物件的一個表示式,所以它後面可以寫上 doubleAfter2seconds 函數的呼叫 async function testResult() { let result = await doubleAfter2seconds(30); console.log(result); }
await 等待後面的promise
物件執行完畢,然後拿到promise resolve
的值並進行返回。顯然await可以修飾axios請求,等待得到結果再往下進行,如:
async getUserList(){ const {data: res} = await this.$http.get('users', { params: this.queryInfo }) //console.log(res) if (res.meta.status !== 200) return this.$message.error('獲取使用者列表失敗! ') this.userlist = res.data.users this.total = res.data.total }
到此這篇關於vue
中Promise的使用方法詳情的文章就介紹到這了,更多相關vue中Promise
的用法內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45