首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在taskmanager回调react原生函数中使用yield

如何在taskmanager回调react原生函数中使用yield
EN

Stack Overflow用户
提问于 2019-08-02 04:55:41
回答 1查看 350关注 0票数 1

我想在TaskManager.defineTask回调函数中使用yield,并使用yield调度redux存储,但我做不到

我什么都试过了

代码语言:javascript
复制
import { all, put, call } from 'redux-saga/effects'
import * as TaskManager from 'expo-task-manager';
import * as Location from 'expo-location';
import * as Permissions from 'expo-permissions';

function* dispatchLocation(locations){
    console.log("Entro d")
    yield put({ type: 'permission/SET_LOCATION', data: locations })
}

TaskManager.defineTask('LocationWatcher', ({ data: { locations }, error }) => {
    if (error) {
        // check `error.message` for more details.
        return;
    }
    console.log('enn')
    yield dispatchLocation(locations)
});

function* watchLocation(){
    let { status } = yield Permissions.getAsync(Permissions.LOCATION);
    console.log(status)
    if (status === 'granted') {
        Location.startLocationUpdatesAsync('LocationWatcher',{})
    }
}

export default function* rootSaga() {
    //call(watchLocation())
    yield all([
        watchLocation()
    ])
}
EN

回答 1

Stack Overflow用户

发布于 2019-08-02 12:11:19

在javascript中,如果你想使用yield,你需要通过一个生成器函数来实现,所以你必须将你的LocationWatcher回调重写成一个生成器函数,比如

代码语言:javascript
复制
TaskManager.defineTask('LocationWatcher', function* ({ data: { locations }, error }) {
    ...
});

也就是说,这不会达到你在这里寻找的目标-- redux-saga只能从一个传奇中分派产生的动作,而LocationWatcher回调则不是。我认为这里对你来说更好的方法是导入你的redux存储,然后直接从你的任务中分派你的动作。所以就像这样:

代码语言:javascript
复制
import store from './path/to/redux/store';
TaskManager.defineTask('LocationWatcher', ({ data: { locations }, error }) => {
    if (error) {
        // check `error.message` for more details.
        return;
    }
    console.log('enn')
    store.dispatch({ type: 'permission/SET_LOCATION', data: locations })
});

并完全取消dispatchLocation生成器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57316860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档