【发布时间】:2022-02-16 01:21:00
【问题描述】:
我已经创建了一个从服务中获取值的承诺,然后在 save_data 函数中分别将其返回到 trans 和 confidence 到 transcript 和 conf。我将如何使用将这些值返回给调用函数,并且在所有承诺都成功返回之前,其余代码不应执行。
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 => {
});
});
【问题讨论】:
-
将“其余代码”移动到
then回调中,或者将其放入一个函数中并从该then回调中调用该函数。或将save_data设为async函数,并在this.fetchTransValues()上使用await(不带then) -
console.log(message)记录 "Hello asynchronous world!" 提示还不够吗? -
@trincot 谢谢大家的解决方案,我可以在块内使用
trans和confidence变量 -
不,因为您需要将它们作为参数传递给
resolve(),例如:resolve({trans, confidence})。然后message会将这些作为属性。
标签: angular typescript promise