国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從async await 報錯Unexpected identifier 談?wù)剬ι舷挛牡睦斫?

Bryan / 1474人閱讀

摘要:解決辦法,將箭頭函數(shù)聲明為函數(shù),代碼如下運行結(jié)果至此,問題解決。必須在函數(shù)的上下文中。對程序而言有了上下文調(diào)用幀才有一個完整的邏輯過程。

先簡單介紹下async await:

  async/await是ES6推出的異步處理方案,目的也很明確:更好的實現(xiàn)異步編程。 詳細(xì)見阮大神 ES6入門

現(xiàn)在說說實踐中遇到的問題:使用await報錯Unexpected identifier

先上代碼:

var sleep = function (time) {
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            resolve(("999"));
        }, time);
    })
};
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var start = async function(){
    arr.forEach(()=>{
        console.log( await sleep(2000) )
    })
}
start();

在循環(huán)中使用sleep方法,這時候報錯:Unexpected identifier

原因:通過查資料發(fā)現(xiàn)一句話 await必須在async函數(shù)的上下文中。(后面重點講)通過個人理解的這句話就是await只能在async函數(shù)中使用。

以上面的代碼為例子,雖然最外層start函數(shù)是通過async聲明的,在start函數(shù)體內(nèi)部的箭頭函數(shù)中使用了await,而該箭頭函數(shù)是一個普通函數(shù),所以await的上文是一個普通函數(shù),最終導(dǎo)致報錯。

解決辦法,將箭頭函數(shù)聲明為async函數(shù),代碼如下:

var sleep = function (time) {
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            resolve(console.log("999"));
        }, time);
    })
};
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var start = function(){
    arr.forEach(async ()=>{
        await sleep(2000)
    })
}
start();

運行結(jié)果:

至此,問題解決。

await必須在async函數(shù)的上下文中。----出處

上下文,英文context,其完整意思應(yīng)當(dāng)是concatenate-text,聯(lián)系文本,編程中翻譯為“引用池”或者“引用區(qū)”更加恰當(dāng)。----百度百科

先舉個例子:

③.小明說:重啟試試

單從這句話我們不能知道重啟什么、為什么小明要說這句話(可能你覺得是電腦)、對誰說的這句話

②.小紅說對小明說她微信出來不了輸入法

這就是小明為什么說這句話的上文(背景),這時候才能知道小明說的重啟是微信程序or手機(jī)(真不是電腦)

①.小紅和小明躺在床上玩手機(jī)

這句也是背景,但是卻不能成為③的上文,因為“躺床上”并不是“重啟試試”的原因(或者說背景)

函數(shù)調(diào)用會在內(nèi)存形成一個"調(diào)用記錄",又稱"調(diào)用幀"(call frame),保存調(diào)用位置和內(nèi)部變量等信息

個人理解:上文指出了環(huán)境、背景。

拿本文中的第一段錯誤代碼來說,await的上文是一個普通箭頭函數(shù),所以使用await會報錯,因為編譯器在執(zhí)行到await時,當(dāng)前調(diào)用幀是箭頭函數(shù)而不是外層的start,所以此時的await就像:小明和小紅躺在床上 小明說“重啟試試” ,是無意義(Unexpected identifier)的。

這時候談?wù)勏挛?,接上面的例?/p>

④.小紅重啟了手機(jī)

④就是③的下文

上下文結(jié)合在一起才能構(gòu)建一個完整的邏輯
比如④和③就是上下文,我們才能將其聯(lián)系起來,如果只有④或者④和②,從邏輯上來說都不是完整的。
對程序而言 有了上下文“調(diào)用幀”才有一個完整的邏輯過程。計算機(jī)才知道下一步該去哪,該回到哪。

需要注意的是,上下文是一個整體,上面將其分開只是為了理解,實際過程中,不存在多帶帶的上文和下文,所以這是await 必須在async 的上下文 的具體意義。

原文首發(fā)地址:http://www.cnblogs.com/lonhon...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91783.html

相關(guān)文章

  • ES6系列文章 異步神器async-await

    摘要:有兩個陌生的關(guān)鍵字,同時函數(shù)執(zhí)行結(jié)果似乎返回了一個對象。用來表示函數(shù)是異步的,定義的函數(shù)會返回一個對象,可以使用方法添加回調(diào)函數(shù)。如果的是對象會造成異步函數(shù)停止執(zhí)行并且等待的解決如果等的是正常的表達(dá)式則立即執(zhí)行。 視頻講解 關(guān)于異步處理,ES5的回調(diào)使我們陷入地獄,ES6的Promise使我們脫離魔障,終于、ES7的async-await帶我們走向光明。今天就來學(xué)習(xí)一下 async-a...

    miqt 評論0 收藏0
  • 重構(gòu):Promise到Async/Await

    摘要:一方面,這里替代的是異步代碼的編寫方式,并非完全拋棄大家心愛的,地球人都知道是基于的,不用太傷心另一方面,是基于回調(diào)函數(shù)實現(xiàn)的,那也沒有替代回調(diào)函數(shù)咯重構(gòu)代碼之后,我仍然用到了庫。 摘要: 夸張點說,技術(shù)的發(fā)展與歷史一樣,順之者昌,逆之者亡。JS開發(fā)者們,趕緊擁抱Async/Await吧! GitHub倉庫: Fundebug/promise-asyncawait 早在半年多之前,...

    zhangfaliang 評論0 收藏0
  • JavaScript闖關(guān)筆記

    摘要:對空數(shù)組是不會執(zhí)行回調(diào)函數(shù)的。就算改變已經(jīng)發(fā)生了,你再對對象添加回調(diào)函數(shù),也會立即得到這個結(jié)果。用來表示函數(shù)是異步的,定義的函數(shù)會返回一個對象,可以使用方法添加回調(diào)函數(shù)。 介紹 通過Array/Object/Function基礎(chǔ)類型編寫。 看到自己不了解的或者比較新穎的用法便會寫上。 不定時更新內(nèi)容。 本文首發(fā)于我的個人網(wǎng)站: Timbok.top 目錄 Array 迭代方法 ...

    Jokcy 評論0 收藏0
  • ES6—Async與異步編程(11)

    摘要:所以異步編程對語言太重要。異步編程我們就以用戶注冊這個特別常見的場景為例,講講異步編程。這種層層嵌套被稱為回調(diào)地獄。相比回調(diào)函數(shù)而言,代碼可讀性更高,代碼的執(zhí)行順序一目了然。函數(shù)內(nèi)部語句返回的值,會成為方法回調(diào)函數(shù)的參數(shù)。 單線程是Javascript語言最本質(zhì)的特性之一,Javascript引擎在運行js代碼的時候,同一個時間只能執(zhí)行單個任務(wù)。 這種模式的好處是實現(xiàn)起來比較簡單,執(zhí)行...

    chengjianhua 評論0 收藏0
  • 【面試篇】寒冬求職季之你必須要懂原生JS(中)

    摘要:如果你還沒讀過上篇上篇和中篇并無依賴關(guān)系,您可以讀過本文之后再閱讀上篇,可戳面試篇寒冬求職季之你必須要懂的原生上小姐姐花了近百個小時才完成這篇文章,篇幅較長,希望大家閱讀時多花點耐心,力求真正的掌握相關(guān)知識點。 互聯(lián)網(wǎng)寒冬之際,各大公司都縮減了HC,甚至是采取了裁員措施,在這樣的大環(huán)境之下,想要獲得一份更好的工作,必然需要付出更多的努力。 一年前,也許你搞清楚閉包,this,原型鏈,就能獲得...

    andycall 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<