第一種寫法(基礎(chǔ)寫法)
話不多說直接上代碼
<script>
? ? //網(wǎng)絡(luò)請(qǐng)求:aaa -> 對(duì)代碼進(jìn)行自己的處理
? ? // 處理一:在aaa后面接上bbb -> aaabbb -> 對(duì)代碼再次進(jìn)行處理
? ? // 處理二:將上一次的結(jié)果aaabbb后面加上ccc -> aaabbbccc -> 繼續(xù)對(duì)代碼進(jìn)行下一步的處理
? ??new?Promise((resolve, reject)?=>?{
??????setTimeout(()?=>?{
????????resolve('aaa')
??????},1000)
????}).then(res?=>?{
??????//1.自己處理10行代碼
??????console.log(res,?'第一層的10行處理代碼');
??????//2.對(duì)結(jié)果進(jìn)行第一次處理
??????return?new?Promise((resolve ,reject)?=>?{
????????resolve(res?+?'bbb')
??????})
????}).then(res?=>?{
??????console.log(res,?'第二層的十行代碼');
??????return?new?Promise((resolve)?=>?{
? ?????//這個(gè)地方Promise里面的兩個(gè)參數(shù)可以只寫一個(gè)磕潮,reject是可以選的
????????resolve(res?+?'ccc')
??????})
????}).then(res?=>?{
??????console.log(res,?'第三層的世行處理代碼');
????})
</script>
第二種promise的簡(jiǎn)寫方法
<script>
? ??new?Promise((resolve)?=>?{
??????setTimeout(()?=>?{
????????resolve('aaa')
??????},1000)
????}).then(res?=>?{
??????//1.自己處理10行代碼
??????console.log(res,?'第一層的10行處理代碼');
??????//2.對(duì)結(jié)果進(jìn)行第一次處理
??????return?Promise.resolve(res?+?'bbb')
????}).then(res?=>?{
??????console.log(res,?'第二層的十行代碼');
??????//第三種簡(jiǎn)寫
??????return Promise.resolve(res?+?'ccc')
????}).then(res?=>?{
??????console.log(res,?'第三層的世行處理代碼');
????})
</script>
只是將
return?new?Promise((resolve ,reject)?=>?{
????????resolve(res?+?'bbb')
})
這個(gè)代碼替換成了return?Promise.resolve(res?+?'bbb')添坊。
Promise最最最簡(jiǎn)介的寫法來了
在第二中簡(jiǎn)寫的寫法上在進(jìn)行簡(jiǎn)寫,省略掉Promise.resolve。
將return?Promise.resolve(res?+?'bbb') => return res + 'bbb'
因?yàn)閮?nèi)部Promise會(huì)對(duì)return進(jìn)行一個(gè)識(shí)別轻纪,然后進(jìn)行包裝沫勿。
具體代碼我就不寫了筒繁,只是在第二種簡(jiǎn)寫的基礎(chǔ)上進(jìn)行一點(diǎn)點(diǎn)的修改噩斟。
總結(jié)一下:Promise的兩種簡(jiǎn)寫方案都基于第一種基礎(chǔ)方案的寫法,第一種基礎(chǔ)方案懂了原理临扮,后面兩種方案也很容易理解论矾。個(gè)人覺得代碼主要是看原理,而不是代碼量杆勇,等原理弄清楚了贪壳,對(duì)代碼進(jìn)行一步一步的修改,完善蚜退,減少書寫不必要的代碼闰靴。
以上內(nèi)容我是在b站上一個(gè)叫ilovecoding的up主上傳的vue視頻學(xué)習(xí)中學(xué)到了,如果有什么不動(dòng)可以私聊我钻注,也可以去b站搜索這個(gè)老師的呦蚂且!感謝您的觀看。