2016-09-03 2 views
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()); 
    } 
} 

한 차이가를 그 getImageScan 즉시 반환하고 콜백은 나중에라는 것을 결과를 "반환"합니다.