JS中调用async函数返回Promise<pending>如何获取PromiseResult的值
问题原因
async 声明的函数本质返回值是 Promise 实例,你直接同步执行 console.log(fetchData('ABC')) 时,异步请求还未执行完成,所以只能拿到状态为pending的Promise对象,无法同步获取到异步执行完成后存储在PromiseResult里的值。
另外你提供的原代码存在两处语法错误,先修正后才能正常运行:
async function fetchData (name) { // 原错误:参数是name,错误引用了未定义的address变量 let url = '/api/1?name=' + name; // 原错误:await已经等待fetch返回结果,错误书写了无效的.then((data))语法 let response = await fetch(url); let data = await response.json(); return data.name; }
获取返回值的两种方式
方法1:通过Promise的then回调取值
fetchData('ABC').then(res => { // res即为目标值"Hello" console.log(res); })
方法2:在async作用域内通过await取值
场景1:在自定义async函数内调用
async function execute() { const res = await fetchData('ABC'); console.log(res); // 输出"Hello" } execute();
场景2:顶层环境调用(支持ES2022标准的运行环境可直接使用)
const res = await fetchData('ABC'); console.log(res); // 输出"Hello"
内容的提问来源于stack exchange,提问作者solidityDev
相关产品推荐
相关产品推荐

