最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

獲取JavaScript異步函數(shù)的返回值

 更新時間:2024年07月10日 16:47:10   作者:老姚  
本文給大家分享的是如何解決獲取JavaScript異步函數(shù)返回值的經(jīng)歷及最后的解決方法,有需要的小伙伴可以參考下

今天研究一個小問題: 怎么拿到JavaScript異步函數(shù)的返回值?

1.錯誤嘗試

當(dāng)年未入行時,我的最初嘗試:

<script>
function getSomething() {
 var r = 0;
 setTimeout(function() {
 r = 2;
 }, 10);
 return r;
}

function compute() {
 var x = getSomething();
 alert(x * 2);
}
compute();
</script>

2.回調(diào)函數(shù)

彈出的不是4,而是0,后來知道這是異步的問題,

要用回調(diào)技術(shù)來做:

<script>
function getSomething(cb) {
 var r = 0;
 setTimeout(function() {
 r = 2;
 cb(r);
 }, 10);
}

function compute(x) {
 alert(x * 2);
}
getSomething(compute);
</script>

3.promise

回調(diào)函數(shù)真是個好東西,然后一直這么寫代碼寫了很久。遇到異步就傳函數(shù)?。『髞砦抑烙衟romise這一個東西,專門解決由于回調(diào)函數(shù)引起的問題,又學(xué)會了promise:

<script>
function getSomething() {
 var r = 0;
 return new Promise(function(resolve) {
 setTimeout(function() {
  r = 2;
  resolve(r);
 }, 10);
 });
}

function compute(x) {
 alert(x * 2);
}
getSomething().then(compute);
</script>

promise仍然沒有放棄回調(diào),只是回調(diào)的位置發(fā)生了改變。

4.generator

再后來我又學(xué)會了generator,知道其有中斷函數(shù)執(zhí)行的能力,又做了新的嘗試:

<script>
function getSomething() {
 var r = 0;
 setTimeout(function() {
 r = 2;
 it.next(r);
 }, 10);
}

function *compute(it) {
 var x = yield getSomething();
 alert(x * 2);
}
var it = compute();
it.next();
</script>

同步的寫法,能實現(xiàn)異步的邏輯,感覺高大上了很多。

5.promise + generator

后來又聽說promise加generator,才是異步的完美方式,趕緊用高射炮打蚊子(這個例子,還不足以說出二者在一起用的好處):

<script>
function getSomething() {
 var r = 0;
 return new Promise(function(resolve) {
 setTimeout(function() {
  r = 2;
  resolve(r);
 }, 10);
 });
}

function *compute() {
 var x = yield getSomething();
 alert(x * 2);
}
var it = compute();
it.next().value.then(function(value) {
 it.next(value);
});
</script>

6.async

心想這算是夠的吧,后來又聽說es7給出了終極方案:async。

作為愛學(xué)習(xí)的少年,心想自己不能被落下:

<script>
function getSomething() {
 var r = 0;
 return new Promise(function(resolve) {
 setTimeout(function() {
  r = 2;
  resolve(r);
 }, 10);
 });
}

async function compute() {
 var x = await getSomething();
 alert(x * 2);
}
compute();
</script>

到這里終于長出了一口氣。

后記:

上面所有的例子,在最新chrome上都可以運行。一個個小例子,點了點幾個名詞。

當(dāng)然也只是“點”而已,如果能提供讀者深入學(xué)習(xí)相關(guān)知識點的一個trigger,那么老姚就心滿意足了。

以上就是老姚童鞋給我們分享的全部內(nèi)容了,希望對大家理解JavaScript異步函數(shù)能夠有所幫助

相關(guān)文章

  • javascript移動開發(fā)中touch觸摸事件詳解

    javascript移動開發(fā)中touch觸摸事件詳解

    這篇文章主要為大家詳細介紹了javascript移動開發(fā)中touch觸摸事件,感興趣的小伙伴們可以參考一下
    2016-03-03
  • JS實現(xiàn)懸浮球只在一側(cè)滑動并且是橫屏狀態(tài)下

    JS實現(xiàn)懸浮球只在一側(cè)滑動并且是橫屏狀態(tài)下

    這篇文章主要介紹了JS實現(xiàn)懸浮球只在一側(cè)滑動 并且是橫屏狀態(tài)下,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 前端項目中正確插入圖片的不同方法和技術(shù)

    前端項目中正確插入圖片的不同方法和技術(shù)

    本文詳細介紹了在前端項目中插入圖片的不同方法,包括HTML標(biāo)簽、CSS樣式、JavaScript動態(tài)加載以及圖片的性能優(yōu)化,其中涉及到的技術(shù)包括響應(yīng)式圖片設(shè)計、圖片懶加載技術(shù)和圖片格式選擇等,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • 詳解實現(xiàn)一個通用的“劃詞高亮”在線筆記功能

    詳解實現(xiàn)一個通用的“劃詞高亮”在線筆記功能

    這篇文章主要介紹了實現(xiàn)一個通用的“劃詞高亮”在線筆記文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • javascript+css實現(xiàn)俄羅斯方塊小游戲

    javascript+css實現(xiàn)俄羅斯方塊小游戲

    這篇文章主要為大家詳細介紹了javascript+css實現(xiàn)俄羅斯方塊小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • JavaScript實現(xiàn)沿五角星形線擺動的小圓實例詳解

    JavaScript實現(xiàn)沿五角星形線擺動的小圓實例詳解

    這篇文章主要介紹了JavaScript實現(xiàn)沿五角星形線擺動的小圓實例詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • JavaScript?canvas實現(xiàn)字符雨效果

    JavaScript?canvas實現(xiàn)字符雨效果

    這篇文章主要為大家詳細介紹了JavaScript?canvas實現(xiàn)字符雨效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • JS實現(xiàn)的網(wǎng)頁上的顏色拾色器

    JS實現(xiàn)的網(wǎng)頁上的顏色拾色器

    這篇文章主要介紹了JS實現(xiàn)網(wǎng)頁上的顏色拾色器,需要的朋友可以參考下
    2016-04-04
  • 15 個 JavaScript Web UI 庫

    15 個 JavaScript Web UI 庫

    本文介紹了 15 個非常強大的 JavaScript Web UI 庫,非常適合各種各種規(guī)模的富 Web 應(yīng)用的開發(fā)。
    2010-05-05
  • uniapp微信小程序多環(huán)境配置以及使用教程

    uniapp微信小程序多環(huán)境配置以及使用教程

    前后端分離開發(fā)模式中,無論前后端都有可能區(qū)分不同的環(huán)境配置,下面這篇文章主要給大家介紹了關(guān)于uniapp微信小程序多環(huán)境配置以及使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05

最新評論

太湖县| 溧阳市| 翼城县| 汉中市| 保山市| 新宁县| 林州市| 美姑县| 虹口区| 南城县| 柘城县| 临沧市| 同仁县| 福贡县| 尼玛县| 天等县| 武山县| 吉林省| 大同市| 新竹市| 吴堡县| 凤山市| 石河子市| 铅山县| 平和县| 古丈县| 曲水县| 札达县| 嘉兴市| 铜鼓县| 霸州市| 乃东县| 商城县| 承德县| 成都市| 盘山县| 喀喇| 霍山县| 科技| 大竹县| 长宁区|