首页 > 解决方案 > 异步等待默认行为

问题描述

如果你有一个 async 函数并且有 await 语句。它在 Mozilla 文档中声明“如果 await 运算符后面的表达式的值不是 Promise,则将其转换为已解析的 Promise。” 无论如何要覆盖这个,即从表达式或空对象返回 false 以指示一切都没有按计划进行 - 或者您是否必须将 stringify 功能包装在 promise 语句中?

async function sortOutString(string) {

const result = await stringify(string);
return result;

}

function stringify(str) = {

try {
    const obj = JSON.parse(str);
    return obj;

} catch (e) {
    return e;
}
};

标签: javascriptasync-await

解决方案


不,您不必使用任何承诺,也不必使用async/ await。你似乎在寻找

function sortOutString(string) {
    try {
        const result = stringify(string);
        return result;
    } catch(err) {
        return false; // or an empty object, or whatever you want
//             ^^^^^^    to indicate that not all did go as planned
    }
}

function stringify(str) {
    const obj = JSON.parse(str);
    return obj;
}

以前,您要返回err对象。


推荐阅读