如何獲取js非同步請求返回值
阿新 • • 發佈:2019-02-10
使用定時函式模擬非同步請求
回撥函式
function doSomething(callback){ setTimeout(function(){ console.log('執行結束'); let result = 4; callback(result); },100); } function callback(result){ console.log('接收到結果為:'+result); } doSomething(callback); //doSomething((result)=>{console.log('接收到結果為:'+result)});
使用es6提供的Promise函式
function doSomething(){ return new Promise(function(resolve){ setTimeout(function(){ console.log('執行結束'); let result = 6; resolve(result); },100); }); } doSomething().then(result=>{ console.log('接收到結果為:'+result); });
Generator函式
function doSomething(){ setTimeout(function(){ let result = 6; it.next(result); },100); } function *gener(){ var result = yield doSomething(); console.log(result); } let it = gener(); it.next();
使用es7新特性async
function doSomething(){ return new Promise(resolve=>{ setTimeout(function(){ let result = 6; resolve(result); },100); }); } async function action(){ let result = await doSomething(); console.log(result); } action();