關(guān)于一個循環(huán)請求與循環(huán)計時器的問題

問題如下(別人來問的, 大體細節(jié)如下)

這是他的代碼

getdb().then(function (dbList) {
    for (var k of dbList) {
        console.log('1');
        (function (i) {
            getList(i).then(function (result) {
                console.log('2')
            })
        })(k)
    }
})

這個是個請求, 循環(huán)第一個請求的結(jié)果作為第二個請求的條件, 如果這么寫

image

會出現(xiàn)id一致為最后一個

然后我想到一個經(jīng)典的面試問題

for (var k of [1, 2, 3, 4, 5]) {
    setTimeout(function () {
        console.log(i)
    }, 0)
}

for循環(huán)加異步的問題, 當(dāng)時的解決方案是通過閉包解決, 通過閉包保存循環(huán)的值, 來完成輸出1,2,3,4,5
代碼如下

for (var k of [1, 2, 3, 4, 5]) {
    (function (i) {
        setTimeout(function () {
            console.log(i)
        }, 0)
    })(k)
}

然后想到這我決定用計時器實現(xiàn)異步的方式去模擬他的請求

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)

但是通過這樣我并沒有得到他的結(jié)果, 此處開始出疑問了, 都是異步, 相同的解決方案, 一個可以解決一個"不可以"(我也不知道為啥不可以, 所以想來問問),是ajax的異步與計時器不同還是我的思路有問題, 當(dāng)前是改用遞歸去解決的循環(huán)請求問題, 不知道大家對這個有什么看法或者見解, 感謝各位的不吝賜教

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,826評論 1 45
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,674評論 1 32
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,422評論 4 61
  • 如何才能幸福: 做自己意識的主人,才有幸福可言 不要以社會的獎賞為目標(biāo),而要以自己能夠控制的獎賞作為目標(biāo)。 我們自...
    yclhub閱讀 545評論 0 0
  • 春到驅(qū)冬寒, 飛雪躲去閑。 萬物復(fù)蘇醒, 天地換新顏。 作者:趙志中(一位只有小學(xué)文化的、喜歡詩詞的、年近古稀的、...
    榮夏1閱讀 453評論 6 13

友情鏈接更多精彩內(nèi)容