如何在 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,你可以直接用axiosfetch.

带参数调用你API

希望对您有所帮助。有疑问欢迎留言。