javascript - 有一个异步获取数据的函数A,其他依赖这个A得到的数据的函数是否都必须是异步的?

查看:60
本文介绍了javascript - 有一个异步获取数据的函数A,其他依赖这个A得到的数据的函数是否都必须是异步的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

现在是这样,函数a是Promise异步返回数据,其他很多函数需要用到这个数据,我现在是每个依赖这个数据的函数都要a().then()这样处理

function a() {   
    return new Promise((resolve, reject) => {
    ....
    })
}

function getsub(id) {   
    return a()
    .then((data) => {
        return .....
    })
    .catch((err) => {...})
}


function tree(id) {   
    return a()
    .then((data) => {
        return .....
    })
    .catch((err) => {...})
}

其中有一些递归循环依赖,复杂度增加后我感觉我要疯了,有没有其他好点的写法啊?

解决方案

可以用点函数式编程的写法:

function mapData(call) {
    return () => a()
    .then((data) => call(data))
    .catch((err) => call(null, err))
}

function sub(data, err) { ... }
function sub2(data, err) { ... }
function sub3(data, err) { ... }

const getsub = mapData(sub)
const getsub2 = mapData(sub2)
const getsub3 = mapData(sub3)

这篇关于javascript - 有一个异步获取数据的函数A,其他依赖这个A得到的数据的函数是否都必须是异步的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆