在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ ES6 Promise的問題

ES6 Promise的問題

function runAsync(callback){
    setTimeout(function(){
        console.log('111');
        callback('222');
    }, 2000);
}

runAsync(function(data){
    console.log(data);
});

剛接觸這個 請問 callback('222')這行代碼是什么意思 ?

回答
編輯回答
苦妄

2000毫秒后打印出 111 并調用傳進來的callback函數(shù),傳入實參 222

2017年11月24日 22:41
編輯回答
神經(jīng)質

回調函數(shù)。
因為異步使你無法得到逐行自上而下運行代碼的結果,異步任務會使當前作用域的同步任務執(zhí)行完才執(zhí)行異步的結果。
就像你定了一份外賣,是無法立即送達的,而你又要事先填好收貨地址(否則你永遠拿不到外賣,而這個callback,就是你訂外賣的收貨地址)。

Promise是異步中的微任務(跟你這個例子沒什么關系),而你這里的setTimeout是一個異步中的宏任務。

2018年6月10日 21:48
編輯回答
逗婦乳

類似模擬Promise返回數(shù)據(jù),平時mock數(shù)據(jù)時可以用,加上定時器實際是模擬ajax請求后端數(shù)據(jù)的延時。

runAsync(function(data){
    //console.log(data);
    return Promise.resolve(data);
});

這個函數(shù)里面的回調函數(shù)可以返回data,此data即是你mock的數(shù)據(jù),比如你按照接口協(xié)議返回的數(shù)據(jù)是

{
  status:‘success’,
  data: {
    list: [],
    field: {},
    ....
  }
}

runAsync中返回的data可以用.then(res => {/res即data值,其他后續(xù)邏輯在此處完成/})

2017年7月8日 01:31
編輯回答
不討囍

這不是Promise,是回調。

function runAsync(callback){
    setTimeout(function(){
        console.log('111');
        callback('222');
    }, 2000);
}
runAsync(param => console.log(param));

運行結果如下:
圖片描述

2018年7月21日 03:29