在线观看不卡亚洲电影_亚洲妓女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 并調(diào)用傳進(jìn)來的callback函數(shù),傳入實參 222

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

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

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

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ù)里面的回調(diào)函數(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,是回調(diào)。

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

運行結(jié)果如下:
圖片描述

2018年7月21日 03:29