您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

异步解决方案——承诺、生成器、异步 {影视源码}

  • 时间:2022-09-03 00:37 编辑: 来源: 阅读:279
  • 扫一扫,手机访问
摘要:异步解决方案——承诺、生成器、异步 {影视源码}
持续升级......ES6Promise// Promise将执行const Promise = new Promise((resolve,reject)= >;{//部分代码if(/*操作成功*/){//pending->;resolved resolve(数据);}else { //待定-& gt;拒绝拒绝(数据);} })//回调承诺()。然后(data = >;{console.log(data)})Promise可以在同步操作的过程中表达异步操作,避免嵌套回调函数,为Promise对象提供统一的接口,更容易控制。缺点:承诺不能中途取消,一旦新创建就执行;如果没有设置回调函数,不会主动抛出异常;无法知道pending的具体状态,比如刚刚开始或者即将完成生成器函数* example generator(){ yield‘hello ~’;屈服‘王’;return ' bye ~ ' } let eg = example generator();eg . next();// {value: "hello~ ",done:false } eg . next();// {value: "king ",done:false } eg . next();// {value: "bye~ ",done:true } eg . next();//{value: undefined,done: true}调用生成器后,不会执行。返回的不是函数的运行结果,而是指向内部状态的指针对象(遍历迭代器对象)。生成器函数可以理解为状态机,封装多个内部状态的yield表达式只能用在生成器函数中,用在别处会出错;生成器函数不能使用yield表达式,所以它变成了一个简单的延迟函数。生成器函数和return语句既有相似之处,也有不同之处。 同样,它们都可以返回紧跟在语句后面的表达式的值。 不同的是,每遇到一次yield,函数就停止执行,下一次从那个位置继续向后执行,而return语句没有位置记忆的功能;Return在一个函数中只能执行一次,yield的next()方法可以执行多次。next(params)参数指示最后一个yield表达式的返回值,因此第一次使用next时,传递该参数是无效的。从语义上讲,第一个next方法是用来开始遍历对象的,所以这个不带参数的函数具有非常重要的语法意义。 从挂起状态到恢复操作,生成器函数的上下文保持不变。 通过下一个方法的参数,有一种方法可以在生成器函数开始运行后,继续向函数体注入值。 也就是说,在生成器函数的不同阶段,可以从外到内注入不同的值,从而调整函数行为。 在不断升级的过程中.....asyncasync是生成器函数的语法糖,ES2017标准引入了async函数,使得异步操作更加方便consta sy = async function(){ let a = await ' hello ';让b =等待‘再见’;console . log(a);console . log(b);} asy();// 'hello' 'bye '不同于内置执行器中的生成器 生成器函数必须由执行器执行,于是就有了co模块,而异步函数是执行器自带的。 也就是说,异步函数的执行,和普通函数一样,只需要一行。 更好的语义 Async和await的语义比asterisk和yield更清晰。 Async表示函数中存在异步操作,await表示下面的表达式需要等待结果的更广泛适用性。 Co同意yield命令后面只能跟Thunk函数或Promise对象,而async函数的await命令后面可以跟Promise对象和原类型的值(数值、字符串和布尔值,但会自动转换成立即解析的Promise对象)。返回值是有承诺的。 异步函数的返回值是Promise对象,比生成器函数的返回值是Iterator对象方便多了。 您可以使用then方法来指定下一个操作。 而且,异步函数可以看作是由多个异步操作包装的Promise对象,await命令是内部then命令的语法糖。


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【域名/主机/服务器|】qq邮箱提醒在哪里打开(2024-06-04 18:58)
【技术支持|常见问题】1556原创ng8文章搜索页面不齐(2024-05-01 14:43)
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部