Javascript 在sagas中调用基本函数有什么意义?

Javascript 在sagas中调用基本函数有什么意义?,javascript,redux-saga,saga,Javascript,Redux Saga,Saga,在sagaapi中,它表示可以将函数传递给一个调用,该调用不是另一个Saga/生成器,也不是返回承诺的函数。换句话说,saga调用可以调用基本的同步javascript函数: 如果fn是一个普通函数并返回一个承诺,那么中间件将 暂停发电机,直到承诺得到解决。承诺之后 如果已解决,则使用已解决的值恢复生成器,或者 如果在生成器中抛出错误,则承诺被拒绝 如果结果不是迭代器对象或承诺,则中间件 将立即将该值返回到传奇,以便 同步恢复其执行 我的问题是这有什么意义 这两者之间有什么区别吗: export

在sagaapi中,它表示可以将函数传递给一个调用,该调用不是另一个Saga/生成器,也不是返回承诺的函数。换句话说,saga调用可以调用基本的同步javascript函数:

如果fn是一个普通函数并返回一个承诺,那么中间件将 暂停发电机,直到承诺得到解决。承诺之后 如果已解决,则使用已解决的值恢复生成器,或者 如果在生成器中抛出错误,则承诺被拒绝

如果结果不是迭代器对象或承诺,则中间件 将立即将该值返回到传奇,以便 同步恢复其执行

我的问题是这有什么意义

这两者之间有什么区别吗:

export function* mySaga(myParam: string) {
    const result = yield call(func, myParam);
    return result;
}

function func(myParam) {
    //do something
}
这是:

export function* mySaga(myParam: string) {
    const result = func(myParam);
    return result;
}

function func(myParam) {
    //do something
}

我在一个新项目中,他们经常这样做。我只是有点困惑为什么会这样做,以及用“调用”调用另一个函数的意义是什么,即使它是一个普通的同步javascript函数。

如果使用SagaMonitor,您将在其中看到这些“调用”(效果)。还有一个可能的原因——准备将函数更改为async(返回承诺)。就个人而言,我认为这不是这样做的好理由,但这当然是主观的。它还允许您以与其他效果相同的方式在测试中模拟函数的参数/返回值。另一件事是它可以防止来自生成器调用堆栈的调度同步调用出错,这将导致错误。如果使用SagaMonitor,您将在其中看到这些“调用”(效果)。还有一个可能的原因——准备将函数更改为async(返回承诺)。就个人而言,我认为这不是这样做的好理由,但这当然是主观的。它还允许您以与其他效果相同的方式在测试中模拟函数的参数/返回值。另一件事是它可以防止来自生成器调用堆栈的调度同步调用出错,这将导致错误。