无法在 redux saga 的 yield 调用中使用 fetch

Can't use fetch inside yield call in redux saga

我正在进行 api 调用,根据响应,我必须更新状态。 这就是我正在做的。

function* testEndpointConnectivity(action){
    const { testConnectivityUri, rowItem } = action.payload
    const res=  yield call( fetch(testConnectivityUri).then(response => {
        //something here
        })
    )
   
   yield put({type: SOME_ACTION});
   
}

但这行不通。我收到错误

 Error: call: argument fn is undefined

起初我尝试将 yield put 放在 catchthen 中响应,但 Whosebug 告诉我使用 yield call.

请帮忙。

不正确

如果您选中 doc,您将看到第一个参数是函数,然后您可以发送参数:

call(fn, ...args)

因此,在您的示例中,正确的变体必须如下所示:

function* testEndpointConnectivity(action) {
    const { testConnectivityUri, rowItem } = action.payload;
    const response = yield call(fetch, testConnectivityUri);
    // and in generator you can wait your answer, you dont need use .then
    console.log("response", response);

    yield put({ type: SOME_ACTION });

}

 // this error mean, first argument in call function must be fetch
 Error: call: argument fn is undefined