如何在 React-Native 中使用 yield 调用?
How to use yield call in React-Native?
我正在我的 RN 应用程序中实现指纹扫描,我找到了一个很好的教程,但是那里的代码有一个我从未使用过的语法 - yield call()
,但是,我用谷歌搜索了它,但无法找到找到一个合适的解释。
这是代码:
if (isFingerPrintSupported === true) {
yield call(KeychainService.setCredentials, user_name,
JSON.stringify({ password }));
}
在这种情况下,我可以使用其他方法代替吗?如果没有,那么我该如何导入或安装才能使其正常工作?
编辑(添加示例代码):
componentWillMount() {
let credentials = yield call(KeychainService.getCredentials);
if (credentials && credentials.username)) {
let isFingerPrintSupported = yield call(KeychainService.checkBiometricSupportednEnrolled);
if (isFingerPrintSupported === true) {
// show fingerprint alert on login page
// and authenticate FingerPrint when user touch the sensor
}
} else {
// else don’t show fingerprint option on login
}
}
yield
可以在生成器函数中使用,它有助于随时异步暂停和恢复函数。此外,它还有助于 return 来自生成器函数的值。
查看此 document 了解更多信息。
call
是有助于进行异步调用的 redux-saga 效果。查看 this 了解更多信息。
import { call } from 'redux-saga/effects'
function* authorize(user, password) {
try {
const response = yield call(/** Api call */, user, password)
...
} catch(error) {
...
}
}
备注
如果你不想用yield
,你可以直接用axios
或fetch
.
带参数调用你API
希望对您有所帮助。有疑问欢迎留言。
我正在我的 RN 应用程序中实现指纹扫描,我找到了一个很好的教程,但是那里的代码有一个我从未使用过的语法 - yield call()
,但是,我用谷歌搜索了它,但无法找到找到一个合适的解释。
这是代码:
if (isFingerPrintSupported === true) {
yield call(KeychainService.setCredentials, user_name,
JSON.stringify({ password }));
}
在这种情况下,我可以使用其他方法代替吗?如果没有,那么我该如何导入或安装才能使其正常工作?
编辑(添加示例代码):
componentWillMount() {
let credentials = yield call(KeychainService.getCredentials);
if (credentials && credentials.username)) {
let isFingerPrintSupported = yield call(KeychainService.checkBiometricSupportednEnrolled);
if (isFingerPrintSupported === true) {
// show fingerprint alert on login page
// and authenticate FingerPrint when user touch the sensor
}
} else {
// else don’t show fingerprint option on login
}
}
yield
可以在生成器函数中使用,它有助于随时异步暂停和恢复函数。此外,它还有助于 return 来自生成器函数的值。
查看此 document 了解更多信息。
call
是有助于进行异步调用的 redux-saga 效果。查看 this 了解更多信息。
import { call } from 'redux-saga/effects'
function* authorize(user, password) {
try {
const response = yield call(/** Api call */, user, password)
...
} catch(error) {
...
}
}
备注
如果你不想用yield
,你可以直接用axios
或fetch
.
希望对您有所帮助。有疑问欢迎留言。