鍍金池/ 問(wèn)答/HTML/ for循環(huán)里使用promise出現(xiàn)問(wèn)題

for循環(huán)里使用promise出現(xiàn)問(wèn)題

// 上傳圖片
var localPamaras = {
    accessToken:_this.data.accessToken,
    restAreaName:_this.data.restAreaName,
    classifyName:_this.data.classifyName,
    itemName:_this.data.itemName,
};
console.log( _this.data.loadUrl);

function UPLoad(filePath,params) {
    let promise = new Promise(function (resolve, reject) {
        wx.uploadFile({
            url: BASEURL+'/hwsaSecret/oss/uploadfiles',
            filePath:filePath,
            formData: params,
            name: 'files',
            success: function (res) {
                console.log(res);
            }
        })
    });
    return promise
};
Promise.all([_this.data.loadUrl.map(item =>UPLoad(item,localPamaras))]).then(function (datas) {
    console.log(datas);
    let paths = datas.map(data => {
        return data;
    });
}).catch(function (res) {
    console.log(res);
});

1.如上上述代碼。我去試圖循環(huán)上傳圖片,所有的上傳完畢后,執(zhí)行操作。
但是實(shí)際是Promise.all.then()卻在上傳完之前就執(zhí)行了。并且Promise.all.then()里打印的并不是返回的數(shù)據(jù),而是圖片描述

2.問(wèn)題大概出在哪里?感謝圍觀。

回答
編輯回答
解夏

all的參數(shù)里面不要加[]

2017年2月17日 03:39
編輯回答
空痕

因?yàn)?/p>

_this.data.loadUrl.map(item =>UPLoad(item,localPamaras))

返回的是一個(gè)數(shù)組,所以你傳給Promise.all的是一個(gè)[[A,B,C]]而不是你以為的[A,B,C]
你應(yīng)該這樣

Promise.all(_this.data.loadUrl.map(item =>UPLoad(item,localPamaras)))
2018年9月13日 00:09