gpt4 book ai didi

angular - 如何以 Angular 从 toPromise() 获取值?

转载 作者:行者123 更新时间:2023-12-04 13:20:22 26 4
gpt4 key购买 nike

我正在制作 Angular 应用程序,其中我正在进行服务调用,

let newValue =  this.dynamicService.getRest(element.optionsUrl,localStorage.getItem('token')).toPromise();

console.log(newValue)给,
{"__zone_symbol__state":null,"__zone_symbol__value":[]}

这里我需要将服务的值存储到变量 newValue .

如果使用 toPromise.then.toPromise().then(function (result) { })我也得到了同样的结果。

请帮助我使用 toPromise() 存储服务的值到变量 newValue ..

编辑:

构造函数:
  constructor(private http: HttpClient, private dynamicService: NgiDynamicFormsService) {
this.newArray = AppConfig.settings.template.templateFormJSON;
}

异步 getQuestions()
          async  getQuestions() {

let questions: any = [];

this.newArray.forEach(element => {
if (element.elementType === 'textbox') {
questions.push(new TextboxQuestion(element));
} else if (element.elementType === 'dropdown') {
let newValue = await this.dynamicService.getRest(element.optionsUrl,localStorage.getItem('token')).toPromise();
element.options = newValue;
questions.push(new DropdownQuestion(element));
} else if (element.elementType === 'textarea') {
questions.push(new TextareaQuestion(element));
} else if (element.elementType === 'checkbox') {
questions.push(new CheckboxQuestion(element));
}
});
return questions.sort((a, b) => a.order - b.order);
}

在这里可以看到得到 newValue后我需要发送 newValue 中的值到 element.options .. 后来我需要打电话 questions.push(new DropdownQuestion(element));对于这个,我无法获得 newValue 中的值所以 questions.push(new DropdownQuestion(element))在将值存储在 newValue 后,给出空值,我需要调用这个, questions.push(new DropdownQuestion(element))
我需要在内部拨打这个电话 forEach函数,所以如果我使用 等待 ,它给出了错误 IDE,
[ts] 'await' expression is only allowed within an async function...

最佳答案

要读取 promise 值,请使用 chainable .then 运算符。

let newValue =  this.dynamicService.getRest(element.optionsUrl,localStorage.getItem('token')).toPromise();

newValue.then((value)=>console.log(value));

你也可以使用 aynsc/await
async func(){
let newValue = await this.dynamicService.getRest(element.optionsUrl,localStorage.getItem('token')).toPromise();
}

----Promise.all----
async  getQuestions() {

let questions: any = [];
let questionsPromise: any = [];
let questionsPromiseResult: any = [];
this.newArray.forEach(element => {
if (element.elementType === 'textbox') {
questions.push(new TextboxQuestion(element));
} else if (element.elementType === 'dropdown') {
questionsPromise.push( this.dynamicService.getRest(element.optionsUrl,localStorage.getItem('token')).toPromise());
questionsPromiseResult.push(element);
} else if (element.elementType === 'textarea') {
questions.push(new TextareaQuestion(element));
} else if (element.elementType === 'checkbox') {
questions.push(new CheckboxQuestion(element));
}
});

Promise.all(questionsPromise).then(results =>{
results.forEach(item,index=>{
let element = this.questionsPromiseResult[index];
element.options = item;
questions.push(new DropdownQuestion(element));
});
});

关于angular - 如何以 Angular 从 toPromise() 获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53646805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com