希望已有的异步函数内部添加部分同步逻辑,但是外部不需要使用await接收返回值实现方法——匿名函数

目录

一、问题

二、解决方法

三、总结


一、问题

1.以前写了一个函数,业务逻辑已经在多个地方使用了。但是现在发现需要在内部添加同步的逻辑修改返回值。如果直接在函数外面加上 async ,则会导致之前的业务逻辑都需要修改(接收返回值时使用await)。怎么样才能让我不修改之前的业务逻辑呢?

2.代码

    //原本的函数
    addMark_dom=(paramA,paramB)=>{
        let data={...paramA}
        /*
           具体的处理逻辑
        */
        return data;
    }


    //直接添加 async、await:直接调用addMark_dom的地方必须使用await接收返回值data
    async addMark_dom=(paramA,paramB)=>{
        let data={...paramA}
        /*
           具体的处理逻辑
        */
        await _api()
        .then((result)=>{
            if(result.status===200){
                Object.assign(data,result.data)
            }
        })
        return data;
    }

二、解决方法

1.使用匿名函数,在原有的函数内部直接执行匿名函数

2.代码

    //原本的函数
    addMark_dom=(paramA,paramB)=>{
        let data={...paramA}
        /*
           具体的处理逻辑
        */
        return data;
    }
    //使用匿名函数:实现了同步,且不影响以前的业务逻辑
    addMark_dom=(paramA,paramB)=>{
        let data={...paramA}
        /*
           具体的处理逻辑
        */
        (async()=>{
           await _api()
            .then((result)=>{
                if(result.status===200){
                    Object.assign(data,result.data)
                }
            })
        })()
        return data;
    }

三、总结

1.被逼无奈之下,突然知道了匿名函数的使用场景了。。。。。希望这些错误或者困难真的可以让我有所成长!

2.感觉办法还可以,如果你们有更好的,欢迎评论,谢谢!

/*

希望对你有帮助!

如有错误,欢迎指正,非常感谢!

*/

你可能感兴趣的:(前端,javascript,开发语言)