js同步异步问题,怎么调用带callback函数的时候改成同步
var doExe = function (a , callback) {
setTimeout(function () {
console.log(a)
if(callback) callback
}, 100 * Math.random())
}
var aTest = function (num) {
for(var i=0 ; i<num ; i++){
doExe(i)
}
}
aTest(10)
不知道有没有记错题目。。。。。。。
doExe是带个callback的函数, 现在aTest执行出来的顺序是乱的,要求按顺序输出0123456789
doExe不能改, aTest可以随便改。。。。求大神指点,闭包也行,队列+apply也行,实在没搞懂。。。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
很简单,你如果不追求代码的美观性和可读性的话,直接把接下来要执行的代码写在回调函数里就好了,一层一层嵌套下去,祝福你~
开个玩笑
Promise:https://segmentfault.com/a/11...
Async/Await:https://segmentfault.com/a/11...
看完这两个希望你能写出自己的异步解决方案~
var doExe = function (a , callback) {
}
var i = 0;
var aTest = function () {
}
aTest()
你需要async
nodejs之async异步编程 - CNode技术社区 http://cnodejs.org/topic/54ac...
不是很明白出题人的用意,如果只是想要输出0123456789,而又不改变doExe函数,那就在callback上动动手脚好了。
题目callback这个地方你记得就是这样的吗?
我加了个括号:
亲们,此题重点应该在于200*Math.random啊。
因为不知道何时会下个setTimeout调用,所以必须保证settimeout每次调用后a的值都必须是递增的,所以传入doExe的a值就必须是相对他来说的全局变量了。
看效果(电脑没网,只能拍图用手机上传了,等有空了上传代码)
既然aTest 可以随便改。。。。那。。方法体内不一定要调用doExe吧。。。O(∩_∩)O哈!
试试这种
同求问题,赞一个