首页 > 解决方案 > Node js:在同一个文件中调用异步函数

问题描述

我在一个文件中定义了一个函数,它调用一个异步函数和一个普通函数。我以这种方式定义了它们

const cms_service = {
    fetchSinglePost: function(post){
        const image = await cms_service.fetchImageData(post)
        let single_post = {
            post: cms_service.fetchPostData(post),
            image: image
        }
        return single_post
    },
    fetchPostData: function (post) {
        var post_response = {
            id: post.data[0].id
        }
        return post_response
    },
    fetchImageData: async function (post) {
        let storyplay_response = {}
        if(typeof post.data[0].tmc_storyplay[0] !== 'undefined' && post.data[0].tmc_storyplay[0]){
            const storyplay = await axios.get(cms_service_url+"tmc_storyplay/"+post.data[0].tmc_storyplay[0], requestHeader);
            storyplay_response = {
                id: storyplay.data.id
            }
        }
        return storyplay_response
    }
}
module.exports = cms_service;

但它给我一个错误说

TypeError:this.fetchPostData 不是函数

我该如何纠正?

标签: javascriptnode.jsexpress

解决方案


this关键字在这种情况下没有意义。让我们尝试通过包装对象名称来重写,如下所示:

const yourObj = {
 foo: () => 1,
 bar: () => yourObj.foo(),
}

module.exports = yourObject;

推荐阅读