ACTIONS

ACTIONS это главный путь к соединению частей вашего приложения (модулей и плагинов) вместе. Это работает подобно Event Emitter только с promises: вы можете вызвать любое событие (event) в любой модуль/плагин который имеет для этого события "подписку". И "подписать" (subscribe) любой модуль/плагин на любое событие с другого модуля/плагина в любом месте приложения. Каждый ACTIONS в ответ обязан вернуть Promise.

Как же это работает на практике: представьте что у вас есть два модуля - user и product. User хочет получить информацию с модуля product.

Прежде всего мы должны подписаться на product module для события "получения информации" и отправить какую-то информацию в ответ на событие:

ACTIONS.on('product.getInfo', () => {
    return Promise.resolve({ name: 'potato', weight: 300 });
});

Следующий шаг это послать событие в product module от user module для получения ответа с информацией.

ACTIONS.send('product.getInfo').then((info) => console.log(info));

Если вы хотите передать какие-то параметры в ваше событие - вы можете добавить их как второй аттрибут.

// product module

ACTIONS.on('product.set', (data) => {
    const newProduct = data;

    return Promise.resolve(newProduct);
});

// user module

ACTIONS.send('product.set', { name: 'tomato' }).then((info) => console.log(info));

Также вы можете использовать async await для удобства:

const tomatoInfo = await ACTIONS.send('product.set', { name: 'tomato' });

Last updated