为了账号安全,请及时绑定邮箱和手机立即绑定

如何同步上传图片?

如何同步上传图片?

浮云间 2021-05-31 18:47:20
我尝试延迟显示图像,直到所有图像都上传(在浏览器中),但我的代码继续(不等待上传)。我正在使用承诺和异步等待。这是我的代码:async _renderPhotos(data){    console.log("step6.1");    const photoSetDiv = document.createElement("div");    photoSetDiv.classList.add("photoSet");    // photoSetDiv.classList.add("unvisible");    photoSetDiv.id=`photoSet${this._step}`;    const urlArray=data.map( image => image.url);    await this._uploadAllImages(data, photoSetDiv);    console.log("step6.3");    this._container.appendChild(photoSetDiv);} _uploadAllImages(array, container){    var index=0;    //upload each of the images is  separate promise    function checkImage(item){new Promise ((resolve, reject) =>{        //Creating <figure>, <img> and <div>.        const figure = document.createElement("figure");        figure.classList.add(item.site);        const title = document.createElement("div");        title.classList.add("titleImage");        title.innerHTML =`#${item.site}`;        figure.appendChild(title);        const img = new Image();        img.classList.add("image");        img.onload=() => {            console.log("step 6.2");            const classCSS=figureClass(index);            figure.classList.add(classCSS);            figure.appendChild(img);            container.appendChild(figure);            index ++;            resolve(item)}        img.src=item.url;        // Event on the image: after clicking on the image it is erlarged        img.onclick= () => {            modal.style.display = "block";            modalImg.src=item.url;        };    })};    return  Promise.all(array.map(checkImage));}我想等待上传图片。等效:在控制台中按以下顺序显示: step 6.1 step 6.2 (多次因为图片多) step 6.3
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

awaitPromise.all/的陷阱之一race是,您可以在非承诺中使用它们,这只会评估价值本身。所以这:

  await undefined;  
  await Promise.all([ undefined, undefined ]);

将直接运行,而不会发出任何警告(好吧,不完全是,它会等待两个 microticks)。

这就是你的情况。您没有return执行从 中创建的承诺checkImage,因此您基本上调用Promise.allundefineds数组。


查看完整回答
反对 回复 2021-06-03
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信