Javascript 在定义本身中定义回调函数

Javascript 在定义本身中定义回调函数,javascript,angular,blob,gojs,Javascript,Angular,Blob,Gojs,我有一个下载函数,它对downloadCallback进行回调 我希望downloadCallback函数在下载函数本身内部定义。我该怎么做 以下是下载功能: download() { let blob = this.diagram.makeImageData({ background: "white", returnType: "blob", callback: <any>this.downloadCallback }) }; 顺便说一下,我正在使用GoJS。我想做

我有一个下载函数,它对downloadCallback进行回调

我希望downloadCallback函数在下载函数本身内部定义。我该怎么做

以下是下载功能:

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

顺便说一下,我正在使用GoJS。我想做的是下载PDF格式的图形。

您可以将downloadCallback放在下载函数中,然后从函数调用中删除它:

下载{ 让blob=this.diagram.makeImageData{background:white,returnType:blob,callback:downloadCallback }; 下载callbackblob:any:void{ // ... }
}; 请确保在尝试使用函数之前定义了它,如下所示:

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

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

我该怎么做?你试过了吗?因为你几乎可以在任何地方声明一个函数。我知道,我也尝试过这样做,也使用了箭头函数,但在这种非常特殊的情况下它不起作用。比如,callback:=>{}找不到downloadCallback。对不起,@user184994的答案应该是正确的。使用前需要定义它。或更改为var downloadCallback=functionblob:any:void{…}。使用var启用提升。@connexo而var启用提升,这只影响变量的上下文,而不影响其定义的位置。因此,该变量可以访问,但它仍然是未定义的。我是否应该在donwload函数本身中定义该函数,因为这似乎对我不起作用。@s4tr2是的,它应该在下载函数中,并且在下载函数的顶部。当您尝试调用它时,请确保您没有使用this.downloadCallback,它应该是downloadCallback@s4tr2好东西,很乐意帮忙
download() {
    // Create the function
    const downloadCallback = (): void => {
      console.log("Test");
    }

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