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

資訊專欄INFORMATION COLUMN

異步與回調

NusterCache / 2395人閱讀

摘要:例子下面的程序,,,,它會按照順序從上往下的順序執行,就是同步。

異步

我對異步的理解:

異步是不等結果,往下執行;同步是等結果出現后,再往下執行

代碼中出現異步程序時,如例2中,執行順序就會發生變化

使用回調,就是讓執行順序不會發生變化

但這肯定不是異步要表達的意思,因為下面的例子是完全是異步的負面效果,那異步到底有啥作用?

下面的例子是解決異步帶來的問題,而非異步的優點。

例子:

1、下面的程序f1(),f2(),...,f5(),它會按照順序從上往下的順序執行,就是同步。

f1 =function(){console.log(1)}
f2 =function(){console.log(2)}
f3 =function(){console.log(3)}
f4 =function(){console.log(4)}
f5 =function(){console.log(5)}

f1()
f2()
f3()
f4()
f5()

2、假如f1()是個異步函數,它的執行順序就會發生變化f2(),...,f5(),f1()

f1 =function(){
    setTimeout(function(){
        console.log(1)
    },10)
}
f2 =function(){console.log(2)}
f3 =function(){console.log(3)}
f4 =function(){console.log(4)}
f5 =function(){console.log(5)}

f1()
f2()
f3()
f4()
f5()

3、這不是我們想要的結果,我們想要的結果是f1()、f2()依次運行,就需要使用回調函數,定義是將函數A作為參數,傳入函數B

f1 =function(fn){
    setTimeout(function(){
        console.log(1)
        fn.call()
    },10)
}
f2 =function(fn){console.log(2);fn.call()}
f3 =function(fn){console.log(3);fn.call()}
f4 =function(fn){console.log(4);fn.call()}
f5 =function(fn){console.log(5);fn.call()}

f1(()=>{
    f2(()=>{
        f3(()=>{
            f4(()=>{
                f5()
            })
        })
    })
})

4、或者使用Promise,更能體現執行的順序

f1 =function(){
    return new Promise(function(resolve){
        setTimeout(function(){
            console.log(1)
            resolve.call()
    },10)
    })
}
f2 =function(){console.log(2)}
f3 =function(){console.log(3)}
f4 =function(){console.log(4)}
f5 =function(){console.log(5)}

f1().then(f2).then(f3).then(f4).then(f5)
回調

把函數 A 作為參數傳入函數 B 中

function async(f1, f2) {
    setTimeout(function() {
        f1.call();
        f2.call();
    }, 0);
}
function foo(){
    console.log("foo");
}
function bar(){
    console.log("bar");
}

console.log("異步開始");
async(foo, bar)
console.log("異步結束");

//打印結果:
//異步開始
//異步結束
//foo
//bar

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/108006.html

相關文章

  • 同步異步異步回調

    摘要:同步與異步以上為同步代碼,函數必須等函數執行完畢后才能執行。異步回調產生的結果就是,函數的調用并不直接返回結果,而往往是交給回調函數進行異步處理。 同步與異步: function a(){} function b(){} a(); b(); 以上為同步代碼,函數b必須等函數a執行完畢后才能執行。 function a(){ ...

    dinfer 評論0 收藏0
  • javascript異步promise

    摘要:到這里,我已經發出了一個請求買漢堡,啟動了一次交易。但是做漢堡需要時間,我不能馬上得到這個漢堡,收銀員給我一個收據來代替漢堡。到這里,收據就是一個承諾保證我最后能得到漢堡。 同期異步系列文章推薦談一談javascript異步javascript異步中的回調javascript異步之Promise.all()、Promise.race()、Promise.finally()javascr...

    rollback 評論0 收藏0
  • JS—異步、回調、高階函數

    摘要:而是在調用發出后,被調用者通過狀態通知來通知調用者,或通過回調函數處理這個調用。請求程序發出請求,從服務器端獲取數據,并設置了回調函數。然后,瀏覽器會設置偵聽來自網絡的響應,拿到數據后,將該回調函數插入到事件循環。 并發與并行 并發是指兩個或多個事件鏈隨時間發展交替執行,以至于從更高的層次來看,就像是同時運行(但在任意時刻只處理一個事件) 并發的關鍵是你有處理多個任務的能力,不一定同...

    Dean 評論0 收藏0
  • 從源碼看 Promise 概念實現

    摘要:從源碼看概念與實現是異步編程中的重要概念,它較好地解決了異步任務中回調嵌套的問題。這些概念中有趣的地方在于,標識狀態的變量如都是形容詞,用于傳入數據的接口如與都是動詞,而用于傳入回調函數的接口如及則在語義上用于修飾動詞的副詞。 從源碼看 Promise 概念與實現 Promise 是 JS 異步編程中的重要概念,它較好地解決了異步任務中回調嵌套的問題。在沒有引入新的語言機制的前提下,這...

    kel 評論0 收藏0
  • 異步

    摘要:在異步機制中,任務隊列就是用來維護異步任務回調函數的隊列。四對象對象是工作組提出的一種規范,目的是為異步編程提供統一接口。 異步 1.JavaScript單線程的理解 Javascript語言的執行環境是單線程(single thread)。所謂單線程,就是指一次只能完成一件任務。如果有多個任務,就必須排隊,前面一個任務完成,再執行后面一個任務,以此類推。 2.JavaScript單線...

    goji 評論0 收藏0
  • Javascript的異步回調

    摘要:異步本質上應該就是多線程語言的產物。如果是多線程的異步,假死的應該是運行方法的線程,而方法仍然會按預期打印出。當然了,按我個人的理解,應該說是是的回調函數。 引子 每個故事都有由來。前兩天在看 gulp 的時候,看到了它有個 promise 的玩意兒,然后的然后,這兩天就掉進了 javascript 的異步和回調的坑里面去了。 其間搜索了 javascript promise,看到了...

    CarlBenjamin 評論0 收藏0

發表評論

0條評論

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