在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 為何這段代碼中await同步阻塞沒有生效?

為何這段代碼中await同步阻塞沒有生效?

想實(shí)現(xiàn)一個(gè)每張圖片延遲3s下載的功能,但是并沒有查找出await未生效的原因.代碼如下

axios.get(imgSrc, {
                responseType: 'stream'
         }).then(async res => {
            console.log("準(zhǔn)備下載")
         await pipeSync(res,dirName,type)
            currentNumber++;
            console.log(currentNumber);
});



function pipeSync(res,dirName,type){
    return new Promise(function (resolve, reject) {
       
           res.data.pipe(fs.createWriteStream(dirName + "/" + (new Date().getTime())+"."+type));
           setTimeout(resolve,3000);
    });
 }
 
 
回答
編輯回答
念初

pipe 不是同步的

const stream = fs.createWriteStream(dirName + "/" + (new Date().getTime())+"."+type);
stream.on('error', reject);
stream.on('finish', () => {
   // 下載完成, 3秒后再 resolve
   setTimeout(resolve,3000);
});

// 這個(gè)操作是異步的
res.data.pipe(stream);
2018年4月20日 00:36
編輯回答
來守候

原因就是async只是一種偽同步,只能保證在當(dāng)前函數(shù)內(nèi)的阻塞,并不能形成影響下載隊(duì)列的全局阻塞

2017年2月8日 16:49