这是他的代码面试
getdb().then(function (dbList) {
for (var k of dbList) {
console.log('1');
(function (i) {
getList(i).then(function (result) {
console.log('2')
})
})(k)
}
})
复制代码
这个是个请求, 循环第一个请求的结果做为第二个请求的条件, 若是这么写ajax
会出现id一致为最后一个闭包
for (var k of [1, 2, 3, 4, 5]) {
setTimeout(function () {
console.log(i)
}, 0)
}
复制代码
for循环加异步的问题, 当时的解决方案是经过闭包解决, 经过闭包保存循环的值, 来完成输出1,2,3,4,5 代码以下异步
for (var k of [1, 2, 3, 4, 5]) {
(function (i) {
setTimeout(function () {
console.log(i)
}, 0)
})(k)
}
复制代码
而后想到这我决定用计时器实现异步的方式去模拟他的请求spa
var arr = [1, 2, 3, 4, 5, 6]
setTimeout(function () {
for (var i of arr) {
(function (a) {
console.log(a)
setTimeout(function () {
console.log(a, '2')
}, 0)
})(i)
}
}, 0)
复制代码
可是经过这样我并无获得他的结果, 此处开始出疑问了, 都是异步, 相同的解决方案, 一个能够解决一个"不能够"(我也不知道为啥不能够, 因此想来问问),是ajax的异步与计时器不一样仍是个人思路有问题, 当前是改用递归去解决的循环请求问题, 不知道你们对这个有什么见解或者看法, 感谢各位的不吝赐教code