4

最近在做一些微信的东西。偶然发现uploadImage接口无论选多少张图都只能上传第一张:

    wx.chooseImage({
        count:   9,
        success: function(res) {
            res.localIds.forEach(function(localId) {
                wx.uploadImage({
                    localId: localId,
                    success: function(res) {
                        alert('上传成功'); // 无论选择几张都只会alert一次
                    }
                });
            });
        }
    });

后来在推酷的一篇文章上看到,微信文档的常见问题中指出了这个问题,uploadImage接口是异步的,但不能同时调用多次,多图需要排队。

后来修改代码如下,就能正常上传多图了。

    var localIds = [];
    wx.chooseImage({
        count:   9,
        success: function(res) {
            localIds = res.localIds;
            syncUpload();
        }
    });
    function syncUpload() {
        if (!localIds.length) {
            alert('上传成功!');
        } else {
            var localId = localIds.pop();
            wx.uploadImage({
                localId: localId,
                success: function() {
                    syncUpload();
                }
            });
        }
    }

SevenOutman
3.2k 声望6.6k 粉丝

有耐心,但气不过不讲道理的事。