拿到JS异步函数返回值的几种方式 | 您所在的位置:网站首页 › js如何拿到函数的返回值 › 拿到JS异步函数返回值的几种方式 |
在我们的编码过程中,为了满足业务需求,经常需要获取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); }) |
CopyRight 2018-2019 实验室设备网 版权所有 |