Promise
promise是nodejs的對象,用于處理異步的同步操作。
new Promsie新建一個promise對象,兩個參數(shù)(resolve,reject)是兩個函數(shù)。
當(dāng)調(diào)用resolve意味著操作成功。
當(dāng)調(diào)用reject意味著操作失敗。
成都創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為玉門等服務(wù)建站,玉門等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為玉門企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
resolve和reject都只會執(zhí)行一次。
then 函數(shù)會在promise執(zhí)行完畢之后調(diào)用。
第一個參數(shù)回調(diào)函數(shù)會在resolve成功后調(diào)用,第二個回調(diào)函數(shù)會在reject觸發(fā)后調(diào)用。
resolve操作成功
1 2 3 4 5 6 7 8 9 10 11 12
| var somePromise = new Promise((resolve,reject)=>{ setTimeout(()=>{ resolve('hey it works'); },2500);
});
somePromise.then((message)=>{ console.log('Success',message); },(errorMessage)=>{ console.log('Error:',errorMessage); });
|
打印出hey it works
reject操作失敗
1 2 3 4 5 6 7 8 9 10 11 12
| var somePromise = new Promise((resolve,reject)=>{ setTimeout(()=>{ reject('ai it is error'); },2500);
});
somePromise.then((message)=>{ console.log('Success',message); },(errorMessage)=>{ console.log('Error:',errorMessage); });
|
打印出Error: ai it is error
復(fù)雜promise
帶參數(shù)并且多重then函數(shù)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| var asyncAdd = (a,b)=>{ return new Promise((resolve,reject)=>{ setTimeout(()=>{ if(typeof a==='number' && typeof b==='number'){ resolve(a+b); }else{ reject('Argument must be number'); } }); }); };
asyncAdd(5,7).then((res)=>{ console.log('Result',res); return asyncAdd(res,'33'); },(errorMessage)=>{ console.log(errorMessage); }).then((res)=>{ console.log('should be 45',res); },(errorMessage)=>{ console.log(errorMessage); });
|
執(zhí)行結(jié)果:
1 2 3
| Result 12 Argument must be number Error: ai it is error
|
多重then特性
在asyncAdd(5,‘7’)函數(shù)reject失敗后,第二個then仍然調(diào)用的是第一個回調(diào)函數(shù)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| var asyncAdd = (a,b)=>{ return new Promise((resolve,reject)=>{ setTimeout(()=>{ if(typeof a==='number' && typeof b==='number'){ resolve(a+b); }else{ reject('Argument must be number'); } }); }); };
asyncAdd(5,'7').then((res)=>{ console.log('Result',res); return asyncAdd(res,'33'); },(errorMessage)=>{ console.log(errorMessage); }).then((res)=>{ console.log('should be 45',res); },(errorMessage)=>{ console.log(errorMessage); });
|
結(jié)果為:
1 2 3
| Argument must be number should be 45 undefined Error: ai it is error
|
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。
名稱欄目:nodejs漸入佳境[14]-promise對象處理異步-創(chuàng)新互聯(lián)
當(dāng)前地址:
http://weahome.cn/article/hidci.html