javascript - 如何解决Javscript 里面阻塞的问题

 书友40301072 发布于 2022-11-25 06:36

比如我要运行依次运行三个函数f1,f2,f3,需要严格按照顺序来执行

但是如果f1 里面出现ajax 或者其它需要运行比较久的东西时,f2,f3 就会先运行。

如何避免?

目前我的打算是,将f2作为f1的callback,f3做f2的callback。

这类型问题,大家是怎么解决的?

6 个回答
  • JSDeferred 是一个解决异步问题的很好的工具:
    https://github.com/cho45/jsdeferred

    jQuery 的 AJAX 类也是基于 Promise 模式的. 比如:

    $.get(url).done(function(data) {
    	// do something after data returned.
    });
    2022-11-25 06:47 回答
  • 设置一个变量,如果前一个函数的变量比如first=good;那么表示他已经执行成功,然后就执行下一个程序。

    2022-11-25 06:47 回答
  • 解决javascript里的阻塞,就是通过callback的方式吧!

    2022-11-25 06:47 回答
  • 解决方案就是你现在做的那样,各种callback,开始可能觉得不舒服,写习惯就好了。
    ServerJS比如NodeJS里callback用得比WebJS更吓人,嘿嘿

    2022-11-25 06:47 回答
  • 把f1/f2里的异步关掉吧。。。

    2022-11-25 06:47 回答
  • 这个问题可以用promise模式来解决。具体的用原生js的实践可以看看这篇文章 https://raw.github.com/kriskowal/q/ma...

    有一些现成的类库可以直接拿来用,比如

    • wind.js
    • eventproxy
    • jQuery的deferred对象
    2022-11-25 06:47 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有