循環中處理某個變量,循環結束後使用這個變量

循環中處理某個變量,循環結束後使用這個變量。在同步中這不是事,可是在異步中,這個問題就變的特別的困難了。
首先我說說遇到的業務需求,我有一段html代碼,其中有不定數量的img標籤,要依次將img標籤對應的圖片上傳的微信服務器上,每上傳成功一張圖片,微信服務器返回一個url,將img標籤中的src值換成微信返回的url值,而後將上面的html代碼上傳
我直接說個人作法吧!
首先我用到了async cheerio包,你須要:
npm install --save async cheerio
須要用到eachSeries(arr, iterator, [callback])方法
這個函數的做用就是將arr中的每個元素執行玩iterator以後,調用callback,--注意callback這裏只會調用一次,即arr中的元素都遍歷以後纔會調用callbackhtml

content = '<div>...</div>' //content是一段html
    const $ = cheerio.load(content);

    // $("img") 是一個Object

    let newArray = [];
    for(var img=0; img < $("img").length; img++){
        newArray.push($("img")[img]);
    }

    async.eachSeries(newArray,function(curr,callback){
        let src = curr.attribs.src;
        api.uploadImage("./public"+src, function(err,result){
            if(err){
                console.log("err",err)
            }else{
                content = content.replace(src,result.url);
                // callback(null,content)
                callback(null)
            }
        })
    },function(err){
        console.log("content:",content)
    })
})
相關文章
相關標籤/搜索