Return 在 Angular 中调用函数的承诺值

Return promise values to calling function in Angular

我已经创建了一个从服务中获取值的承诺,然后 return 它 transconfidence 分别在 transcriptconf save_data函数。我将如何将 return 这些值用于调用函数,并且在所有承诺成功 returned 之前,其余代码不应执行。

 fetchTransValues() {
      return new Promise((resolve, reject) => {
        setTimeout(function() {
            var trans =  this.service.getTranscriptValue();
          var confidence =this.service.getConfidenceValue();
        }, 1000);
      });
    }
    async save_recording(){  

      this.fetchTransValues().then(function(message) {
        this.answer_loading=true;
        let formData=new FormData();
        const transcript_arr = [];
        const confidence_arr = [];

        
        ....
        ....
        this.http.post(this.baseUrl+'api/auth/get-results', formData).subscribe(response  => {
      
      
        });
      });
     

承诺中的价值: 解决此问题的任何解决方案,谢谢

使用 transconfidence 结果解决您的承诺,并在承诺解决时捕获这些结果。正如您使用 async,请使用 await。这也解决了您的代码存在的 this 问题:

class Container {
    service = {
        getTranscriptValue() { return "dummy" },
        getConfidenceValue() { return "another dummy" }
    }
    
    fetchTransValues() {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                const trans = this.service.getTranscriptValue();
                const confidence = this.service.getConfidenceValue();
                resolve({trans, confidence});
            }, 1000);
        });
    }

    async save_recording(){  
        const {trans, confidence} = await this.fetchTransValues();
        console.log("received", trans, "and", confidence);
        this.answer_loading = true;
        // ..etc
    }
};

new Container().save_recording();