在我们的编码过程中,为了满足业务需求,经常需要获取javascript 异步函数的返回值。今天就来汇总一下拿js返回值的几种方式。
1,通过回调函数的方式来拿返回值,这个想必大家不会陌生
function getSomething(cb) { var r = 0; setTimeout(function() { r = 2; cb(r)//回调函数 },10) } function compute(x) { alert(x * 2); } getSomething(compute);
2.通过promise的方式,这个之前有做过详细的介绍
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);
3.通过async的方式
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();
4.通过generator方式实现
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(); //同步的写法实现异步的逻辑
5.通过promise和generator相结合的方式
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); })
添加新评论