ES6中async函數(shù)與await表達(dá)式的基本用法舉例
一、async 函數(shù)
概念:
async 是一個(gè)修飾符,async 定義的函數(shù)會(huì)默認(rèn)的返回一個(gè)Promise對(duì)象resolve(成功值)的值,因此對(duì)async函數(shù)可以直接進(jìn)行then操作,返回的值即為then方法的傳入函數(shù)。
舉例:
async function demo(){
// 1:當(dāng)返回值不是promise對(duì)象 當(dāng)調(diào)用函數(shù)的時(shí)候就是已成功的值
// return "succ";
// 2:當(dāng)返回的是promise對(duì)象 那么函數(shù)(promise對(duì)象)的結(jié)果與返回的promise狀態(tài)一致
return new Promise((resolve,reject)=>{ //Promise 內(nèi)容請(qǐng)參考上期作品,關(guān)注專欄。
let flag = true;
if(flag){
resolve("succ");
}else{
reject("error");
}
})
}
const MyPromise = demo();
MyPromise.then((resolve)=>{
console.log(resolve);
},(reject)=>{
console.log(reject);
})二、await表達(dá)式
它也是一個(gè)修飾符,await 關(guān)鍵字 只能放在 async 函數(shù)內(nèi)部, await關(guān)鍵字的作用 就是獲取 Promise中返回的內(nèi)容, 獲取的是Promise函數(shù)中resolve。
1.await必須放在async函數(shù)中
2.await右側(cè)的表達(dá)式一般為promise對(duì)象
3.await可以返回的是右側(cè)promise成功的值
4.await右側(cè)的promise如果失敗了,就會(huì)拋出異常,需要通過(guò)try…catch捕獲處理
舉例:
// 1:await需要寫在async函數(shù)的內(nèi)部
// 2:await 修飾的Promise 返回的值就是resolve的值
// 3:后面的代碼需要等待 await后的結(jié)果
async function demo(){
const a = await "a";
const b = await new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log("定時(shí)器執(zhí)行了....");
resolve("b");
},3000);
});
const c = await "c";
console.log(a,b,c);
}
demo();舉例:失敗的代碼 await 錯(cuò)誤的代碼 需要用try catch捕獲
async function demo(){
try{
const a = await new Promise((relsolve,reject)=>{
reject("數(shù)據(jù)不存在");
})
}catch(error){
console.log(error);
}
}
demo();
三、async await ajax 基礎(chǔ)使用
function mark (url){
return new Promise((resolve,reject)=>{
const ajax = new XMLHttpRequest();
ajax.open("GET",url)
ajax.send();
ajax.onreadystatechange=function(){
if(ajax.readyState==4){
if(ajax.status==200){
resolve(JSON.parse(ajax.response));
}
}
}
})
}
async function demo(){
const res = await mark("http://127.0.0.1:5500/test.json")補(bǔ)充:async await ajax使用
首先要?jiǎng)?chuàng)建對(duì)象,用get的方法請(qǐng)求后面?zhèn)魅氲牡刂?,再發(fā)送請(qǐng)求,通過(guò)判斷出輸出有無(wú)數(shù)據(jù)。
function sendajax(url){
return new Promise((resolve,reject)=>{
const http = new XMLHttpRequest();//創(chuàng)建對(duì)象
http.open("GET",url);//用get方法請(qǐng)求地址
http.send();//發(fā)送請(qǐng)求
http.onreadystatechange = function(){
if(http.readyState==4){
if(http.status==200){
resolve(JSON.parse(http.response));
}
}
}
})
}
async function demo(){
const res = await sendajax("http://127.0.0.1:8848/web2209/ES6/test.json");
if(res.code==200){
console.log("有數(shù)據(jù)");
}else{
console.log("無(wú)數(shù)據(jù)");
}
}
demo();
總結(jié)
到此這篇關(guān)于ES6中async函數(shù)與await表達(dá)式的基本用法的文章就介紹到這了,更多相關(guān)ES6 async函數(shù)與await表達(dá)式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS 調(diào)試中常見(jiàn)的報(bào)錯(cuò)問(wèn)題解決方法
下面小編就為大家?guī)?lái)一篇JS 調(diào)試中常見(jiàn)的報(bào)錯(cuò)問(wèn)題解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
js驗(yàn)證輸入是否為手機(jī)號(hào)碼或電話號(hào)碼示例
使用js驗(yàn)證輸入是否為手機(jī)號(hào)碼或電話號(hào)碼,下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下2013-12-12
如何用js實(shí)現(xiàn)鼠標(biāo)向上滾動(dòng)時(shí)浮動(dòng)導(dǎo)航
今天給大家介紹一下使用JavaScript判斷鼠標(biāo)滑輪是不是向上滾動(dòng),當(dāng)向上滾動(dòng)的時(shí)候,導(dǎo)航條浮動(dòng)在頂部位置。示例代碼如下。2016-07-07
JavaScript中常見(jiàn)的Polyfill示例詳解
這篇文章主要介紹了JavaScript中常見(jiàn)Polyfill的相關(guān)資料,Polyfill是一種代碼,用于在舊版瀏覽器中實(shí)現(xiàn)不支持的現(xiàn)代JavaScript功能,以確??鐬g覽器兼容性和代碼統(tǒng)一性,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04
一個(gè)js隨機(jī)顏色腳本(用于標(biāo)簽頁(yè)面,也可用于任何頁(yè)面)
一個(gè)js隨機(jī)顏色腳本(用于標(biāo)簽頁(yè)面,也可用于任何頁(yè)面)...2007-09-09
JavaScript中如何在一個(gè)循環(huán)中等待示例代碼詳解
這篇文章主要介紹了在JavaScript中如何在一個(gè)循環(huán)中等待(附代碼示例),下面是如何使用for..of 循環(huán)來(lái)迭代一個(gè)數(shù)組并在循環(huán)內(nèi)等待,需要的朋友可以參考下2022-08-08
JavaScript 實(shí)現(xiàn)模態(tài)對(duì)話框 源代碼大全
對(duì)話框在Windows應(yīng)用程序中使用非常普遍,許多應(yīng)用程序的設(shè)定,與用戶交互需要通過(guò)對(duì)話框來(lái)進(jìn)行,因此對(duì)話框是Windows應(yīng)用程序中最重要的界面元素之一,是與用戶交互的重要手段。2009-05-05
JS實(shí)現(xiàn)課程表小程序(仿超級(jí)課程表)加入自定義背景功能
這篇文章主要介紹了JS實(shí)現(xiàn)課程表小程序(仿超級(jí)課程表)加入自定義背景功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12

