Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular2:在回调函数中调用其他函数_Javascript_Asynchronous_Angular_Asynccallback - Fatal编程技术网

Javascript Angular2:在回调函数中调用其他函数

Javascript Angular2:在回调函数中调用其他函数,javascript,asynchronous,angular,asynccallback,Javascript,Asynchronous,Angular,Asynccallback,我正在构建Angular2应用程序。 我在myService中有一个异步函数deleteObject。它回报了一个承诺。我在组件中有另一个名为refresh的函数,用于刷新页面。我如何从承诺内部调用刷新。这就是我所尝试的: export class AppComponent{ refresh(){ // refresh page here } delete(){ this.myService.deleteObject(params).t

我正在构建Angular2应用程序。 我在
myService
中有一个异步函数
deleteObject
。它回报了一个承诺。我在组件中有另一个名为
refresh
的函数,用于刷新页面。我如何从承诺内部调用刷新。这就是我所尝试的:

export class AppComponent{

    refresh(){
        // refresh page here
    }

    delete(){
        this.myService.deleteObject(params).then(
           function(data){
             //this.refresh() doesn't work here.
        });
    }
}    
这是一个背景问题。“this”指回调函数的上下文,可以是承诺或其他内容。您实际上想要的是对组件上下文的引用,您可以这样实现

delete(){
    var componentRef = this; // colloquially "that" or "self"
    this.myService.deleteObject(params).then(
       function(data){
         componentRef.refresh() // does work here.
    });
}

如果您使用的是Typescript,则可以使用。它们保留了您期望的
上下文。因此,替换

delete(){
        this.myService.deleteObject(params).then(
           function(data){
             //this.refresh() doesn't work here.
        });
}
为此:

delete(){
    this.myService.deleteObject(params).then(
            (data)=>{
                //this.refresh() should work here
            }
    );
}

另外,fwiw,您可以查看哪个是一个强大的角度范例(从技术上讲是rxjs范例,但他们合并了它),谢谢@kirinthos。我是Javascript新手。这对我很有效。:)@安德伍德,我建议你给我一个readThank@kirinthos。我来看看。谢谢帕特里克。我认为这是正确的答案,当涉及到打字脚本时