javascript中async、await、yield、*的用法

javascript中async、await、yield、*的用法

async、await的用法

function call(){

console.log('call funtion');

return new Promise(resolve=>{

setTimeout(function(){

console.log('call funtion timeout');

resolve('dd');

},1000);

});

}

function normalFunction() {

console.log('normalFunction');

return 'data'

}

// call(function(){

// console.log('callback');

// });

async function asynctest() {

console.log('start');

await call();

await normalFunction();

await new Promise(resolve=>{ console.log('wait result'); resolve()});

console.log('end');

}

asynctest();

執行結果

start

call funtion

call funtion timeout

normalFunction

wait result

end

PS F:\\zzj1026\\Rnx\\testEgg>

個人理解 async是說明這個function是異步的await這個關鍵字是阻塞(將函數掛起,等待返回結果),如果返回值是promise則等待promise的resolve或reject的結果,如果是函數返回的普通值直接往下執行

yield使用

function call(){

console.log('call funtion');

return new Promise(resolve=>{

setTimeout(function(){

console.log('call funtion timeout');

resolve('dd');

},1000);

});

}

function normalFunction() {

console.log('normalFunction');

return 'data'

}

function* yieldFunc() {

console.log('start');

yield call();

yield normalFunction();

console.log('end');

}

let yieldData=yieldFunc();

let firstData=yieldData.next();

console.log(firstData);

firstData.value.then(function(data){

console.log(data);

});

yieldData.next();

console.log(yieldData);

執行結果

PS F:\\zzj1026\\Rnx\\testEgg> node .\\async.js

start

call funtion

{ value: Promise { <pending> }, done: false }/<pending>

normalFunction

{}

call funtion timeout

dd


分享到:


相關文章: