重构 javascript 回调 - 在命名空间之外运行

Refactoring javascript callbacks - function out of namespace

我有一个 Javascript 函数,如下所示:

function a(par1) {
    fun.doSth(function(par2) {
        another.doSth(function() {
           //par1 is needed here
        })
    })
}

现在,它确实像这样工作,我可以在第二个回调中访问 par1。但我想重构一下,将两个匿名函数命名为 functions 以提高可读性

function a(par1) {
    fun.doSth(b)
}

function b(par2) {
    another.doSth(c)
}

function c() {
    //par1 is needed here
}

但是现在 par1 不可用了,我猜是因为 c 超出了 a 的范围?通过这些函数作为参数来修复传递 par1 的唯一方法是什么?

谢谢大家!

您需要将 par1 作为参数提供给 function c()。否则没有办法让它干净

您可以使用 currying:

function doSomething1(cb1) {
    cb1(1);
}

function doSomething2(cb2) {
    cb2(2);
}

function a(par1) {
    doSomething1(b(par1))
}

function b(par1) {
    return function (par2) {
        doSomething2(c(par1))
    }
}

function c(par1) {
    return function c(arg) {
        console.log('arg: ', arg, 'par1: ', par1);
    }
}

console.log(a(0));