Рабочий вызывается перед выполнением Action (Redux) - PullRequest
0 голосов
/ 22 октября 2018

Попытка вызова API для получения некоторых данных после входа пользователя и сохранения в индексированной базе данных.Но рабочий код вызывается до того, как произойдет вход, т. Е. После запуска приложения оно завершает свою работу.

app-worker.js

import Api from "./api/index";
import { openDb, addToStore, closeDb } from "./indexedDB";

self.onmessage = (oEvent) => {
    Api().get("person").then((results) => {
        openDb();
        addToStore({
            storeName: "persons",
            data: results,
        });
        closeDb();
    });
};

workerfile.js

import Worker from "./app-worker.js";

let workerObj = null;

export function startWorker() {
    workerObj = new Worker();
    workerObj.postMessage();
}

export function stopWorker() {
    workerObj.terminate();
}

actionfile.js

import { startWorker } from "../workerfile";

export const login = (user, history) => async (dispatch) => {
    dispatch({ type: LOGIN_USER });
    Api().post("login", user)
        .then((result) => {
            dispatch({
                type: LOGIN_USER_SUCCESS,
                payload: result.user
            });
            history.push("/home");
            startWorker();
        })
        .catch((err) => {
            dispatch({
                type: LOGIN_USER_FAILURE,
            });
        });
};

Требование - вход пользователя в систему -> разрешить работнику работать, пока он не получит данные изAPI и сохранить в базе данных -> остановить работника

...