700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 获取JavaScript异步函数的返回值实例详解

获取JavaScript异步函数的返回值实例详解

时间:2024-02-03 16:42:28

相关推荐

获取JavaScript异步函数的返回值实例详解

web前端|js教程

JavaScript,js,返回

web前端-js教程

本文给大家分享的是如何解决获取JavaScript异步函数返回值的经历及最后的解决方法,有需要的小伙伴可以参考下

mui开发项目源码,ubuntu低延时内核,tomcat6守护进程,熊猫弹幕爬虫,PHP检查文件属性,罗田seolzw

今天研究一个小问题: 怎么拿到JavaScript异步函数的返回值?

html404源码,调试符号 vscode,ubuntu 8.04 安装,tomcat 配置端口,mfc使用sqlite,青岛即墨网站网页设计,数据库update用法,更换ip 域名服务器 修改解析地址,dedecms 网站地图插件,js 前端mvc框架,孢子爬虫,php sqlite,seo 站长工具,springboot 抢购,标签云制作,教育行业门户网站源码,php 调用谷歌网页翻译,微信页面模板 效果,网站后台登陆不进去,html页面切换过渡,bootstrap管理系统模板 表单居多,socket聊天程序下载lzw

1.错误尝试

易语言微信登陆源码,ubuntu丢失文件恢复,爬虫的家常做法,php svgz,修文seo优化lzw

当年未入行时,我的最初尝试:

function getSomething() { var r = 0; setTimeout(function() { r = 2; }, 10); return r;}function compute() { var x = getSomething(); alert(x * 2);}compute();

2.回调函数

弹出的不是4,而是0,后来知道这是异步的问题,

要用回调技术来做:

function getSomething(cb) { var r = 0; setTimeout(function() { r = 2; cb(r); }, 10);}function compute(x) { alert(x * 2);}getSomething(compute);

3.promise

回调函数真是个好东西,然后一直这么写代码写了很久。遇到异步就传函数!!后来我知道有promise这一个东西,专门解决由于回调函数引起的问题,又学会了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);

promise仍然没有放弃回调,只是回调的位置发生了改变。

4.generator

再后来我又学会了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

后来又听说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);});

6.async

心想这算是够屌的吧,后来又听说es7给出了终极方案: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();

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。