Определение функции обратного вызова в самом определении - PullRequest
0 голосов
/ 31 августа 2018

У меня есть эта функция загрузки, которая выполняет обратный вызов для «downloadCallback».

Я хочу, чтобы функция downloadCallback была определена внутри самой функции загрузки. Как я могу это сделать?

Вот функция загрузки ():

 download() {
    let blob = this.diagram.makeImageData({ background: "white", returnType: "blob", callback: <any>this.downloadCallback
  })
};

Вот функция обратного вызова download:

downloadCallback(blob : any) : void {
    var url = window.URL.createObjectURL(blob);
    var reader = new FileReader();
    reader.onloadend = () => {            
      var imageDataUrl = reader.result;
      var imgWidth = imageDataUrl.width;
      var imgHeight = imageDataUrl.height; 
      let pdf = new jspdf('p', 'mm', 'a4'); 
      var position = 0;
      pdf.setFontSize(30);
      pdf.text("Diagram", 100, 20, 'center');
      pdf.addImage(imageDataUrl, 'PNG', 0, 25, position, imgWidth, imgHeight);  
      pdf.save('Diagram.pdf');
      console.log(imageDataUrl);  
    };
   reader.readAsDataURL(blob); 
  }

Кстати, я пользуюсь GoJS. Я пытаюсь загрузить график в виде PDF.

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Убедитесь, что вы определили свою функцию, прежде чем пытаться ее использовать, например:

download() {
    // Create the function
    const downloadCallback = (): void => {
      console.log("Test");
    }

    // Use it
    let blob = this.diagram.makeImageData({ background: "white", returnType: "blob", callback: <any>downloadCallback});  
}
0 голосов
/ 31 августа 2018

Вы можете просто поместить функцию downloadCallback () в функцию download () и удалить ее из вызова функции:

download() {
    let blob = this.diagram.makeImageData({ background: "white", returnType: "blob", callback: <any>downloadCallback
  });
  
  downloadCallback(blob : any) : void {
    // ...
  }
};

Должно работать без проблем, хотя я не тестировал

...