Return 在 Angular 中调用函数的承诺值
Return promise values to calling function in Angular
我已经创建了一个从服务中获取值的承诺,然后 return 它 trans
和 confidence
分别在 transcript
和 conf
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 => {
});
});
承诺中的价值:
解决此问题的任何解决方案,谢谢
使用 trans
和 confidence
结果解决您的承诺,并在承诺解决时捕获这些结果。正如您使用 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();
我已经创建了一个从服务中获取值的承诺,然后 return 它 trans
和 confidence
分别在 transcript
和 conf
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 => {
});
});
承诺中的价值:
使用 trans
和 confidence
结果解决您的承诺,并在承诺解决时捕获这些结果。正如您使用 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();