Javascript - 将回调值传递给调用变量

时间:2015-11-11 15:57:28

标签: javascript ajax

我有一个函数和一个变量......

var imageURLs = retrieveRemoteImages(vinUrls)

if imageURLs !== undefined) {
   // do something
}

function retrieveRemoteImages(urls) {
    var imageURls = [];
    processSpinnerActivity(START_IMAGES_IMPORT);
    importImagesforSlideShow(REMOTE_IMAGES_URL, urls, function (images) {
        if (images !== undefined) {
            imageURls = images;
            return imageURls;
        }
    })
    return imageURls;
}

这是按预期的......

function importImagesforSlideShow(imagePath, urls, call_back) {
    var functionName = 'importImagesforSlideShow'
    $.ajax({
        type: "POST",
        url: LOCAL_PROCESSING_MODULE,
        data: {data: [imagePath, urls, IMAGE_EXTENSION_QUALIFIER], functionid: functionName},
        dataType:"json",
        success: function (res) {
            processSpinnerActivity(IMPORT_IMAGES_SUCCESS);
            call_back(res);
        },
        error: function (err) {
            processSpinnerActivity(IMPORT_IMAGES_ERROR);
            console.log(err.message);
        }
    });
}

回调工作正常,但我无法将最终值传递给imageURLs,我需要,因为下一步不会发生,直到它有一个值。

有什么想法吗?

谢谢!

这不是一个重复的问题,我的AJAX没有问题,返回异步值*

1 个答案:

答案 0 :(得分:1)

不可能,你正在执行一段异步代码。所以你的代码仍在运行,而他们还没有任何数据。您必须在回调中处理数据,例如:

function retrieveRemoteImages(urls, callback) {
    processSpinnerActivity(START_IMAGES_IMPORT);
    importImagesforSlideShow(REMOTE_IMAGES_URL, urls, callback);
}

retrieveRemoteImages(vinUrls, function(imageURLS) {
    //do your stuff
});