我可以使用return停止在生成器函数中执行吗?

时间:2018-09-28 09:28:27

标签: redux-saga

在下面的代码中,我使用return停止执行生成器函数,并使调用生成器的传奇继续运行。我不完全了解幕后情况。在下面的代码中使用return是罚款还是会产生意想不到的后果?

export function* getSessionToken(user: string | CognitoUser, redirect: string = '') {
    try {
        return yield call(refreshAwsSession, user, 'sessionToken');
    } catch (error) {
        if (redirect) {
            const search = '?redirect=' + encodeURIComponent(redirect);
            yield put(push({ pathname: '/signin', search: search }));            
            return;
        }

        yield put(push('/signin'));
    }
}

1 个答案:

答案 0 :(得分:2)

Sagas位于generators之下,因此可以使用return

function* a() {

  yield 1;
  return 2;
  yield 3; // never goes here
}

const a1 = a();

console.log(a1.next().value);
console.log(a1.next().value);
console.log(a1.next().value);