在javascript中同步调用依赖方法

时间:2018-07-05 05:48:14

标签: javascript asynchronous async-await synchronization

我有以下3种方法。 _uploadImages()接受images个对象数组。我希望_uploadImages()首先完成并返回所有上传图像的URL。然后,我想将这些网址传递给另一种方法,以保存在另一台服务器上。

但是问题是

  

_uploadImages()立即返回一个空数组。

_uploadImages(images) { 

    let imageUrls = [];

    images.map((image, index) => {
        let formData = new FormData();
        let file = {
            uri: image.path,
            type: image.mime,
            name: image.path.substring(image.path.lastIndexOf('/') + 1),
            size: image.size
        }

        formData.append('file', file);
        formData.append('thumb', 'questions');

        api
            .uploadImage(formData)
            .then((response) => {
                if (response.data != null) { 
                    let img = { 
                        name: 'Image ' + (++index), 
                        url: response.data.body.file, 
                        type: 'image' 
                    };
                    imageUrls.push(img);
                }                    
                //console.log(imageUrls);
            })
            .catch((error) => {
                console.log(error);
            });
    });

    return JSON.stringify(imageUrls);
}

_saveQuestion(postData) { 
    console.log(postData);

    api
        .postQuestion(postData)
        .then((response) => {
            console.log(response);
        })
        .catch((error) => {
            console.log(error);
        });
}

_onQuestionFormSubmit() { 

    let images = this.state.images;

    let imageUrls = this._uploadImages(images);
    console.log(imageUrls);

    let postData = {
        medias: imageUrls
    }

    this._saveQuestion(postData);
}

有人可以对此提出想法吗?

0 个答案:

没有答案