javascript - 同步方式写异步到底指什么?
天蓬老师
天蓬老师 2017-07-05 10:52:36
[JavaScript讨论组]

同步不就是同步,异步不就是异步吗?同步方式写异步到底指什么?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(3)
PHP中文网

异步时常见回调函数嵌套,形如:

// 先读取 a
fs.readFile('a.txt', (a) => {
  // a 读取成功后读取 b
  fs.readFile('b.txt', (b) => {
    // b 读取成功后读取 c
    fs.readFile('c.txt'. (c) => {
      console.log(a + b + c)
    })
  })
})

这时出现了回调嵌套,需要一层一层往里套,非常容易出错且不好维护。

同步方式写异步类似于:

function * asyncWrapper () {
  const a = yield read('a.txt')
  const b = yield read('b.txt')
  const c = yield read('c.txt')
  console.log(a + b + c)
}
// 使用形如 co 的库自动执行异步逻辑
co(asyncWrapper)

这时候异步业务逻辑就通过正常的同步方式实现了。

我想大声告诉你

同步方式写异步指得是代码的组织形式而已。使用async/await可以实现同步方式写异步,看下面代码:

const testAsync = async () => {
  const t = await f();
  console.log(t);
};

testAsync();

f是一个异步操作,如果不使用async/await,直接同步的方式打印t,结果肯定是undefined;使用async/await之后,代码看上去形式还是同步的,但是里面是先执行异步操作f,再打印t的

伊谢尔伦

楼上两个答案足矣

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号