它必须是基本的,但请帮助我理解为什么这不起作用。
当我编写一个普通的arrow函数并返回jsx时,它就工作了。但是,当我使用async/await请求和相同的arrow函数返回jsx时,它失败了。
编辑:
实际上,我必须在列表视图中显示用户的配置文件图像。所以,我调用这个函数来检索我的渲染(){返回}
块中相应用户的图像
这很有效
handleProfilePhoto = firstName => {
return (
<img
className="comment-img"
src={require("../../../../Webroot/images/dashboard/image3.png")}
alt={firstName + " profile"}
/>
);
};
但事实并非如此
handleProfilePhoto = async (firstName) => {
let err = false;
await Axios
.get(MY_URL)
.then(function () {
err = false;
})
.catch(function () {
err = true;
});
return err === true ? (
<img
className="comment-img"
src={require("../../../../Webroot/images/dashboard/image3.png")}
alt={firstName + " profile"}
/>
) : (
<img
className="comment-img"
src={require("../../../../Webroot/images/dashboard/image4.png")}
alt={firstName + " profile"}
/>
);
};
请不要使用。然后()
与异步/等待
你要么使用链接或异步的方式。
handleProfilePhoto = async (firstName) => {
let err = false;
try {
await Axios.get(MY_URL);
} catch(err) {
err = true;
}
return err === true ? (
<img
className="comment-img"
src={require("../../../../Webroot/images/dashboard/image3.png")}
alt={firstName + " profile"}
/>
) : (
<img
className="comment-img"
src={require("../../../../Webroot/images/dashboard/image4.png")}
alt={firstName + " profile"}
/>
);
};
另外,handleProfilePhoto
返回一个promise。
handleProfilePhoto.then(result => {
//your result is here
})
问题内容: 如何从异步函数返回值?我试图喜欢这个 它给了我, 问题答案: 您不能超出范围。为了获得预期的结果,您应该将其包装到异步IIFE中,即 样品。 有关更多信息 由于返回一个Promise,因此可以将其省略,如下所示: 然后像以前一样做
更新 我已经读了十几篇关于这个话题的文章,但没有一篇涉及到这个基本问题。我将在本文末尾列出一个参考资料部分。 原始帖子 我对函数的理解是,它返回一个promise。 MDN文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function 在我的程序中,我可以编写如下内容: 我
问题内容: 如何从异步函数返回值?我试图喜欢这个 它给了我, 问题答案: 您不能超出范围。为了获得预期的结果,您应该将其包装到异步IIFE中,即 样品。 有关更多信息 由于返回一个Promise,因此可以将其省略,如下所示: 然后像以前一样做
问题内容: 我正在使用nodejs通过Mongoose从Mongodb查询数据。获取数据后,我想对该数据做一些处理,然后再将其响应给客户端。但是我无法获得返回值。在Google上浏览后,我了解到Node.js函数是异步javascript函数(非I / O阻止)。我尝试了这个Tut( 问题答案: 获得未定义值的原因是因为find函数是异步的,并且可以随时完成。在您的情况下,使用后就结束了,因此在访
问题内容: 就像一个人在这里问到但他的解决方案是调用其他函数 …我想知道是否有可能拥有一个不调用a的函数第二个功能基于异步请求的响应,但仅当异步请求响应时。 可能是这样的: 不调用另一个函数,这有可能吗? 我要实现的目标是拥有一个可以用一些参数调用的函数,该函数将返回异步Web服务(如FB)的响应。 问题答案: 简而言之,没有。您不能让异步函数同步返回有意义的值,因为该值当时不存在(因为它是在后台
问题内容: 在SO中多次问过这个问题。但是我还是收不到东西。 我想从回调中获得一些价值。请看下面的脚本进行澄清。 如果我尝试返回该值,则只是“未定义”。我遵循了SO的一些想法,但仍然失败。 那些是: 问题答案: 这是不可能的,因为您无法从同步方法内部的异步调用返回。 在这种情况下,您需要将回调传递给foo,该回调将接收返回值 问题是,如果内部函数调用是异步的,则所有“包装”此调用的函数也必须是异步