将值从image.onload传递给周围的函数

时间:2015-12-11 19:56:24

标签: javascript javascript-events onload onerror

我想知道图像路径是否存在,所以我使用onload和onerror加载javascript图像

Handlebars.registerHelper('image', function(submission_id, point_id) {
    var picture = new Image();

    picture.onload = function() {
        alert('test');
        result = '<img src="' + picture.src + '" />';
    };
    picture.onerror = function() {
        result = '0';
    };
    picture.src = 'static/uploads/submissions/' + submission_id + '/' + point_id + '.png';
    return result;
});

Onload和onerror正在运行,因为如果路径正确,我会收到警告“test”。但问题是,“结果”的返回不起作用。我知道,它不起作用ecause onload被异步调用并在返回结果后触发。但是我怎么能解决这个问题呢?

谢谢,最好的, 克劳斯

1 个答案:

答案 0 :(得分:1)

因为代码是异步的,所以return语句不起作用。相反,您需要做的是定义一个函数,(称为回调)在加载图像时调用。然后你的代码看起来像这样。

var picture = new Image();
picture.src = "something";
picture.onload = function() {
    callback(picture);
} 

然后回调看起来像这样。

var callback = function(picture) {
    doSomething(picture);
}

您可以详细了解回调here