Как использовать yield call в React-Native? - PullRequest
1 голос
/ 08 апреля 2020

Я внедряю сканирование отпечатков пальцев в своем приложении 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
    }
}

1 Ответ

0 голосов
/ 08 апреля 2020

yield может использоваться внутри функции генератора, и это помогает приостановить и возобновить функцию в любое время асинхронно. Кроме того, это также помогает возвращать значение из функции генератора.

Проверьте этот документ для получения дополнительной информации.

call - это эффекты излишней саги, которые помогают сделать асинхронный звонки. Проверьте это для получения дополнительной информации.

import { call } from 'redux-saga/effects'

function* authorize(user, password) {
  try {
    const response = yield call(/** Api call */, user, password)
    ...
  } catch(error) {
    ...
  }
}

Примечание

Если вы не хотите использовать yield, вы можете напрямую позвонить вы API с параметрами, используя axios или fetch.

Надеюсь, это вам поможет. Не стесняйтесь сомнений.

...