摘要:話不多說(shuō),同樣直接上栗子執(zhí)行完成,進(jìn)行第二步操作執(zhí)行結(jié)果為進(jìn)行第二步操作執(zhí)行完成因?yàn)槭钱惒交卣{(diào)函數(shù),所以是不需要先等函數(shù)執(zhí)行完成后,才能執(zhí)行進(jìn)行第二步操作
Hi,小伙伴們,今天來(lái)和大家談一談?dòng)嘘P(guān)javascript 中回調(diào)的問(wèn)題,首先回調(diào)函數(shù)分為兩種
1、同步回調(diào)函數(shù)(普通的回調(diào)函數(shù))
2、異步回調(diào)函數(shù)
其中同步回調(diào)函數(shù)是要等到回調(diào)函數(shù)都執(zhí)行完成后才能進(jìn)行接下來(lái)的操作,也就是說(shuō)是阻塞式運(yùn)行。
話不多說(shuō),直接上栗子
function waitFive(callback){ var currentDate = new Date(); var pus = 0; while(pus<5000){ var date = new Date(); pus = date - currentDate; } callback("執(zhí)行完成"); } waitFive(function(msg){console.log(msg);}); console.log("進(jìn)行第二步操作;"); **執(zhí)行結(jié)果為:** 執(zhí)行完成 進(jìn)行第二步操作
因?yàn)槭峭交卣{(diào)函數(shù),所以是要先等waitFive函數(shù)執(zhí)行完成后,才能執(zhí)行
console.log("進(jìn)行第二步操作;");
而異步回調(diào)函數(shù)不需要等到回調(diào)函數(shù)都執(zhí)行完成后才能進(jìn)行接下來(lái)的操作,也就是說(shuō)是非阻塞式運(yùn)行。
話不多說(shuō),同樣直接上栗子
function waitFive(callback){ setTimeout(function(callback){ callback("執(zhí)行完成"); },5000); } waitFive(function(msg){console.log(msg);}); console.log("進(jìn)行第二步操作;"); **執(zhí)行結(jié)果為:** 進(jìn)行第二步操作 執(zhí)行完成
因?yàn)槭钱惒交卣{(diào)函數(shù),所以是不需要先等waitFive函數(shù)執(zhí)行完成后,才能執(zhí)行
console.log("進(jìn)行第二步操作;");
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/86546.html
摘要:如果沒(méi)有其他異步任務(wù)要處理比如到期的定時(shí)器,會(huì)一直停留在這個(gè)階段,等待請(qǐng)求返回結(jié)果。執(zhí)行的執(zhí)行事件關(guān)閉請(qǐng)求的,例如事件循環(huán)的每一次循環(huán)都需要依次經(jīng)過(guò)上述的階段。因此,才會(huì)早于執(zhí)行。 showImg(https://segmentfault.com/img/bVbnY76); 概念 同步任務(wù)(Synchronous) 在主線程上排隊(duì)執(zhí)行的任務(wù),只有前一個(gè)任務(wù)執(zhí)行完畢,才能執(zhí)行后一個(gè)任務(wù) ...
摘要:我們可以進(jìn)行適當(dāng)?shù)母倪M(jìn),把回調(diào)函數(shù)寫到外面即使是改寫成這樣,代碼還是不夠直觀,但是如果有了對(duì)象,代碼就可以寫得非常清晰,一目了然,請(qǐng)看這樣函數(shù)就不用寫在的回調(diào)中了目前的標(biāo)準(zhǔn)中還未支持對(duì)象,那么我們就自己動(dòng)手,豐衣足食吧。 本文同步自我得博客:http://www.joeray61.com 很多做前端的朋友應(yīng)該都聽說(shuō)過(guò)Promise(或者Deferred)對(duì)象,今天我就講一下我對(duì)Prom...
摘要:以多線程的形式,允許單個(gè)任務(wù)分成不同的部分進(jìn)行運(yùn)行。提供協(xié)調(diào)機(jī)制,一方面防止進(jìn)程之間和線程之間產(chǎn)生沖突,另一方面允許進(jìn)程之間和線程之間共享資源。主線程會(huì)不斷的重復(fù)上訴過(guò)程。 眾所周知,js是單線程的,說(shuō)到線程,我們首先來(lái)仔細(xì)辨析一下線程和進(jìn)程的知識(shí)。 一、進(jìn)程與線程 阮一峰老師的一篇文章寫的很好 cpu會(huì)給當(dāng)前進(jìn)程分配資源,進(jìn)程是資源分配的最小單位,進(jìn)程的資源會(huì)分配給線程使用,線程是C...
摘要:在語(yǔ)言中,函數(shù)替換的不是表達(dá)式,而是多參數(shù)函數(shù),將其替換成一個(gè)只接受回調(diào)函數(shù)作為參數(shù)的單參數(shù)函數(shù)。為什么里面必須使用函數(shù)呢,因?yàn)槲覀冃枰_保傳入的值只有一個(gè),利用其回調(diào)函數(shù),來(lái)進(jìn)行遞歸自動(dòng)控制函數(shù)的流程,接收和交還程序的執(zhí)行權(quán) 前言 這篇文章主要是梳理一下自己對(duì)阮一峰大神寫的關(guān)于async/await文章,有寫得不對(duì)的地方以及理解得不對(duì)的地方,各位大佬請(qǐng)指錯(cuò)! 對(duì)比 簡(jiǎn)單對(duì)比傳統(tǒng)異步,...
摘要:如果有錯(cuò)誤,則到的第二個(gè)回調(diào)函數(shù)中,對(duì)錯(cuò)誤進(jìn)行處理。假設(shè)第一個(gè)的第一個(gè)回調(diào)沒(méi)有返回一個(gè)對(duì)象,那么第二個(gè)的調(diào)用者還是原來(lái)的對(duì)象,只不過(guò)其的值變成了第一個(gè)中第一個(gè)回調(diào)函數(shù)的返回值。 ES6標(biāo)準(zhǔn)出爐之前,一個(gè)幽靈,回調(diào)的幽靈,游蕩在JavaScript世界。 正所謂: 世界本沒(méi)有回調(diào),寫的人多了,也就有了})})})})})。 Promise的興起,是因?yàn)楫惒椒椒ㄕ{(diào)用中,往往會(huì)出現(xiàn)回調(diào)函數(shù)一...
閱讀 3069·2021-11-24 11:14
閱讀 3480·2021-11-22 15:22
閱讀 3200·2021-09-27 13:36
閱讀 712·2021-08-31 14:29
閱讀 1328·2019-08-30 15:55
閱讀 1752·2019-08-29 17:29
閱讀 1143·2019-08-29 16:24
閱讀 2400·2019-08-26 13:48