两个问题:
要 设置
async
函数创建的promise的分辨率值,您必须使用函数本身的return
语句async
。您的代码return
在getJSON
回调async
函数中有一个(将被忽略),而不是函数本身。要 获得功能 的分辨率值
async
,您必须先使用await
它(或以更旧的方式通过then
等使用其诺言)。
对于#1,您可以返回
awaiting 的结果
getJSON:
async function getData() { try { return await $.getJSON('./data.json').promise(); } catch (error) { console.log("error" + error); } finally { console.log('done'); }}
对于#2,您将需要其中一个
await函数(这又需要在
async函数内部):
console.log(await getData());
…或通过
then以下方式兑现其承诺:
getData().then(data => { console.log(data);});
旁注:您的
getData隐藏错误,将其转换为带有值的分辨率,
undefined通常不是一个好主意。相反,请确保它传播错误:
catch (error) { console.log("error" + error); throw error;}
然后,自然地,请确保使用
getData该错误的任何事物都可以处理或传播该错误,并确保某个地方 可以
处理该错误(否则,您将收到“未处理的拒绝”错误)。
重新发表您的评论
我如何从函数外部的日志中访问json文件中的“内容”?
的异步结果/解析度值
getData是JSON定义的对象(不再是JSON,它已被解析)。因此,您可以使用
.stuff它,例如:
// In an `async` functionconsole.log((await getData()).stuff);// Or using `then`:getData().then(data => { console.log(data.stuff);});
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)