为什么 yield call(response.json) 挂起?
Why does yield call(response.json) hang?
const response = yield call(fetch, `${config.backendUrl}/verify`, {
method: 'POST'
})
const responseJson = yield call(response.json)
console.log(responseJson)
这是来自 redux-saga 的代码。 Yield 挂起并且 console.log
不打印任何内容。但是,如果我将 response.json
替换为 () => response.json()
,它就会起作用。为什么?
那是因为当您调用 yield call(response.json)
时,调用 response.json
的上下文错误 (this
)。
您可以使用 bind
(例如 yield call(response.json.bind(response))
)或指定 context
(例如 yield call([response, response.json])
)来解决这个问题,但是 call
确实是无用。您可以:
const responseJson = yield response.json();
const response = yield call(fetch, `${config.backendUrl}/verify`, {
method: 'POST'
})
const responseJson = yield call(response.json)
console.log(responseJson)
这是来自 redux-saga 的代码。 Yield 挂起并且 console.log
不打印任何内容。但是,如果我将 response.json
替换为 () => response.json()
,它就会起作用。为什么?
那是因为当您调用 yield call(response.json)
时,调用 response.json
的上下文错误 (this
)。
您可以使用 bind
(例如 yield call(response.json.bind(response))
)或指定 context
(例如 yield call([response, response.json])
)来解决这个问题,但是 call
确实是无用。您可以:
const responseJson = yield response.json();