Javascript 在ES6上从异步/等待函数获取返回值时遇到问题,如何解决?
我试图从数组中减去一个Javascript 在ES6上从异步/等待函数获取返回值时遇到问题,如何解决?,javascript,reactjs,typescript,ecmascript-6,async-await,Javascript,Reactjs,Typescript,Ecmascript 6,Async Await,我试图从数组中减去一个id,将其用作参数,但在尝试时遇到了一些问题 代码如下: const takeId = async (): Promise<any> => { const newArr = await departmentResolution[0].template; getTemplateId = await newArr.map((item: any) => { return item; }); return
id
,将其用作参数,但在尝试时遇到了一些问题
代码如下:
const takeId = async (): Promise<any> => {
const newArr = await departmentResolution[0].template;
getTemplateId = await newArr.map((item: any) => {
return item;
});
return getTemplateId[0]; // this returns { id: 11, anotherKey: 'value' }
}
const setId = async () => {
const el = await takeId();
return el.id;
}
不要在渲染模板中使用异步方法 在模板中,使用在承诺解析时更新的状态变量。使用状态值时,一旦状态更新,它将作为重新渲染触发
状态={
someKey:'someInitialValue'
};
异步myMethod(){
const myAsyncValue=wait anotherAsyncMethod();
this.setState({someKey:myAsyncValue});
}
render(){
返回{this.state.someKey};
}
请阅读wait
的工作原理。只有当您等待的值是承诺时,它才会做一些有用的事情。这段代码看起来非常误导,因为似乎没有任何实际的异步操作生成承诺,因此没有理由使用async
或wait
@jfriend00,我已经读过了,但仍然没有得到这个概念。我只是想寻求帮助,以获得更清楚的想法。我不认为请去阅读
是一个合适的答案,因为在这个网站上,人们会就自己的疑问提问。我明白了。所以,你似乎没有承诺,你实际上需要等待。没有发生任何异步的事情。您可以删除代码中的所有async
和wait
关键字,这样就可以了。您还需要从takeId
(它只是一个对象)修复返回值的类型,我这么说是因为你完全误用了await
,这表明你对它的用途和使用方法没有基本的了解,而stackoverflow并不是为了编写关于这类广泛主题的长教程。然后,再加上这个问题,你甚至没有真正解释你想解决什么问题。首先,您应该从此代码中删除所有对async
、wait
和promissions
的使用,因为它们在任何情况下都不会有用。我现在提出了一些建议。如果你被他们冒犯了,我和其他人会走开。你写了一个很不清楚的问题。我给出了一些建议(可能不恰当地表现出一点挫折感),但这些建议是合法的。我将接受你的建议,不再试图向你提供建议。
<Container>
<Breadcrumb />
{handleTemplate(setId())}
</Container>