使用Express的异步/等待返回Promise { <pending> }

4
我正在尝试使用异步/等待函数,但是根据一些教程,我不知道为什么它总是返回。
Promise { <pending> }

这是我的代码:

function doubleAfter2Seconds(x) {
    return new Promise(resolve => {
        setTimeout(() => {
            console.log(x);
            resolve(x * 2);
        }, 2000);
    });
}
async function get_media_async (media_id) {
    const a = await doubleAfter2Seconds(10);
    return a;
}


exports.get_media = function(media_id){
    var media_url = get_media_async(media_id);
    return media_url;
};

非常感谢您的帮助!


3
async/await 不能自动将异步代码变为同步代码。一旦你有了异步内容,它所接触到的所有内容也将变为异步。因此,你的 get_media 函数也是异步的。 - Yury Tarabanko
可能是async/await总是返回promise的重复问题。 - Yury Tarabanko
1个回答

3

get_media方法中,你也需要使用async/await。原因是你在这个方法中调用了一个async函数get_media_async,因此这个方法也需要是async的。

exports.get_media = async function(media_id){
    var media_url = await get_media_async(media_id);
    return media_url;
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接