2016-09-03 3 views
2

をロードした後、私はすでに非同期JavaScriptの行動に複数の応答をチェックし、コールバックを試し、次の約束を試して、私はここにSOS要求を送信したいparallell計算し、値を返す:/のjavascript:イメージは

多くの場合、最初の答えので、

Image(マスクのようなもの)の空でない、透明なピクセルをすべて見つけて、2進数の配列を返す必要があります。私のプログラムは、短期的には何

  • それは、画像のURLを取得し、それからnew Image()を作成します。
  • 画像をキャンバスにした後、それはキャンバス
  • に画像を描画キャンバスを作成し、image.onLoad()にDOM
  • に追加し、その色のすべてのピクセルをスキャンし、データアレイをバック与えます。

私の問題は、画像が読み込まれるまで計算を強制的にWAITにすることです。私はこのような何かを実行しようとしました:image.onLoadが起こる前に

return getDataArray(image.onLoad()= function(){ 
    // ...init things... 
})); 

それでも、それは、getDataArray機能になります。

私は生産的なアイデアから外に出て歩くつもりです。ここで

が本来の機能である:

getImageScan: function() { 
    this.myImage.src = imageScanner.imgUrl; 
    var is = this; 
    return is.getArrayFromCanvas(this.myImage.onload = function() { 
     is.imageHeight = is.myImage.height; 
     is.imageWidth = is.myImage.width; 
     is.appendCanvasToBody(); 
     is.initGraphicalContent(); 
     is.drawImageOnCanvas(); 
     console.log("image is loaded"); 
    }) 
}, 

getArrayFromCanvas: function() { 
    console.log("request for calculations"); 
    var booleanJson = this.getJsonFromCanvas() 
    return this.getBinaryArithmeticFromBooleans(booleanJson); 
} 

と、これは結果であり、計算

[] 

ため

要求画像が

をロードされ、ここで全体が*です。より多くの情報が必要な場合はjs(私の個人的なプロジェクトはスラックタイムなので、 HTの問題):

https://github.com/Vilkaz/gridToImage/blob/master/web/resources/js/imageScanner.js

答えて

1

あなたは、それはパラメータはありませんが、getArrayFromCanvasに何かを渡すためにしてみてください。あなたがこれを行う理由を私は理解していないが、私はあなたがこのような何かしたいと思います:

getImageScan: function(callback) { 
    this.myImage.src = imageScanner.imgUrl; 
    var is = this; 
    this.myImage.onload = function() { 
    is.imageHeight = is.myImage.height; 
    is.imageWidth = is.myImage.width; 
    is.appendCanvasToBody(); 
    is.initGraphicalContent(); 
    is.drawImageOnCanvas(); 
    console.log("image is loaded"); 
    callback(is.getArrayFromCanvas()); 
    } 
} 

非同期動作の違いの1つ以上を、あなたのオリジナルのコードがgetImageScan戻ってすぐにコールバックがに後で呼ばれているということです結果を「返す」。

関連する問題