0

現時点では、これに本当にこだわっています。以下のコードを参照してください。

var getImageFromUrl = function(url, callback) {
var img = new Image, data, ret={data: null, pending: true};

img.onError = function() {
    throw new Error('Cannot load image: "'+url+'"');
}
img.onload = function() {
    var canvas = document.createElement('canvas');
    document.body.appendChild(canvas);
    canvas.width = img.width;
    canvas.height = img.height;

    var ctx = canvas.getContext('2d');
    ctx.clearRect( 0, 0, canvas.width, canvas.height );
    ctx.drawImage(img, 0, 0);
    // Grab the image as a jpeg encoded in base64, but only the data
    data = canvas.toDataURL('image/jpeg').slice('data:image/jpeg;base64,'.length);
    // Convert the data to binary form
    data = atob(data)
    document.body.removeChild(canvas);

    ret['data'] = data;
    ret['pending'] = false;
    if (typeof callback === 'function') {
        callback(data);
    }
}
img.src = url;

return ret;
}

そして、これが私の呼び出しです:

getImageFromUrl('pdfconversion/roundel.jpg', addImage);

基本的に、私のメソッドが実際にやりたいことを実行するには (ここには示されていません)、コールバック関数が必要です。この場合は、getImageFromUrl メソッドにアクセスした直後に呼び出される「addImage」です。現時点では、getImageFromUrl メソッドが呼び出され、「addImage」のコールバック関数が最終的に呼び出される前に、残りのコード (上には表示されていません) が実行されます。これを次の呼び出しにするにはどうすればよいですか? どんな助けでも大歓迎です。

4

1 に答える 1

0

コールバックを削除して、順番に呼び出します。

getImageFromUrl('pdfconversion/roundel.jpg');
addImage();
于 2013-04-12T11:54:53.877 に答える