js同步异步问题,怎么调用带callback函数的时候改成同步
发布于 8 年前 作者 vlwq 10448 次预览 最后一次回复是 8 年前 来自 问答
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(10)输出0123456789
注意: guaTest函数可以随意改动,但是doExe 不能改动(不知道有没有记错doExe的代码,如果可以改直接用promise包一下解决了)
目前方案(目前我自己尝试出可以用递归解决,如下面)
var doExe = function (a, callback) {
setTimeout(function () {
console.log(a)
if (callback) {
callback()
}
}, 100 * Math.random())
}
var max = 9
var aTest = function (index) {
doExe(index, () => {
index < max && aTest(++index)
})
}
aTest(0)
那个面试官是用队列+doExe.apply解决了,当时没看懂,请问这个怎么做的,或者说请问有什么其他解决方案
9 回复
还可以用events,
来自酷炫的 CNodeMD
方法2
@dislido 非常感谢!也看明白了。。。。。重新认识了promise的感觉。膜一发
@godghdai 这个看起来好像类似与yield/generator, 谢谢,自己搜索一下
令人窒息的操作哈哈哈 @godghdai
今日最佳
不用async