• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

游客您好
第三方账号登陆
  • 点击联系客服

    在线时间:8:00-16:00

    客服电话

    400-123-4567

    电子邮件

    1691000615@qq.com
  • 星点互联APP

    随时掌握企业动态

  • 扫描二维码

    关注星点微信公众号

Lv.4 学员组
4号会员,22活跃度,2019/01/10 加入学习
  • 14发帖
  • 14主题
  • 0关注
  • 0粉丝
被老师的功底深深震撼到了,仿佛在看一场艺术电影,真的听老师的课,是一种享受,希望老师能出更多精彩的课程
优秀讲师更多
课堂交流更多
开启左侧

[javascript] JS中异步调用可以转化为同步调用吗?

[复制链接]
BIG烂漫儿 发表于 2019-1-10 17:23:38 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
BIG烂漫儿提问: 发布时间:2019-01-10
JS中异步调用可以转化为同步调用吗?
悬赏1 金钱 (回答此问题,将获得1 金钱奖励)
状态问题未解决,快来回答吧
  1. function wait() {
  2.         const p = () => ({
  3.             value: new Promise(resolve => setTimeout(() => resolve(), 3000))
  4.         })
  5.         let state = {
  6.             next: () => {
  7.                 state.next = programPart
  8.                 return p()
  9.             }
  10.         }
  11.         function programPart() {
  12.             console.log('unlocked1')
  13.             state.next = programPart2
  14.             return p()
  15.         }
  16.         function programPart2() {
  17.             console.log('unlocked2')
  18.             console.log('it\'s sync!!')
  19.             return {
  20.                 value: void 0
  21.             }
  22.         }
  23.         return state
  24.     }
复制代码



这个函数该如何调用?

回复

使用道具 举报

精彩评论2

Wotchin 发表于 2019-1-10 17:23:55 | 显示全部楼层
var state = wait()
state.next()
    .value
    .then(() => state.next().value)
    .then(() => state.next().value)
    .then(() => console.log(state.next()))
回复

使用道具 举报

Geely 发表于 2019-1-10 17:24:36 | 显示全部楼层
可以使用async函数来实现视觉上的同步调用。async是 Generator 函数的语法糖。

  1. const fn = async function () {
  2.   let state = wait();
  3.   await state.next().value;
  4.   await state.next().value;
  5.   return state.next().value;
  6. }
  7. fn()
复制代码
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies 上传

本版积分规则

Powered by Discuz!X3.5 ©2001-2013 Comsenz Inc.星点互联设计( 鲁ICP(125234543) )