add apply effect creater

This commit is contained in:
Dimitri Rosenberg
2016-02-29 01:15:30 +03:00
parent ca26076c7c
commit bd08832e14
2 changed files with 17 additions and 8 deletions
+3 -3
View File
@@ -16,6 +16,7 @@ import {
put,
race,
call,
apply,
fork,
select,
cancel,
@@ -55,13 +56,12 @@ namespace GettingStarted {
}
}
namespace EffectCombinators {
const fetchPostsWithTimeout:Saga = function* fetchPostsWithTimeout() {
while( yield take('FETCH_POSTS') ) {
// starts a race between 2 effects
const {posts, timeout} = yield race({
posts : call(fetchApi, '/posts'),
posts : call([this, fetchApi], '/posts'),
timeout : call(delay, 1000)
})
@@ -140,7 +140,7 @@ namespace TaskCancellation {
try {
while(true) {
yield put({type: 'REQUEST_START'})
const result = yield call(someApi)
const result = yield apply(this, someApi)
yield put({type: 'REQUEST_SUCCESS', result})
yield call(delay, 5000)
}
+14 -5
View File
@@ -55,6 +55,12 @@ declare module 'redux-saga/effects' {
export type Effect = {};
type EffectFunction<T1, T2, T3> = (arg1?: T1, arg2?: T2, arg3?: T3, ...rest: any[]) => Promise<any> | Iterable<any>;
interface EffectFunctionContext<T1, T2, T3> {
0: any;
1: EffectFunction<T1, T2, T3>;
}
export function take(pattern?: Pattern): Effect;
@@ -62,14 +68,17 @@ declare module 'redux-saga/effects' {
export function race(effects: {[key:string]: any}): Effect;
export function call<T1, T2, T3>(fn: (arg1?: T1, arg2?: T2, arg3?: T3, ...rest: any[]) => any,
arg1?: T1, arg2?: T2, arg3?: T3, ...rest: any[]): Effect;
export function call<T1, T2, T3>(fn: EffectFunction<T1, T2, T3>, arg1?: T1, arg2?: T2, arg3?: T3, ...rest: any[]): Effect;
export function call<T1, T2, T3>(fn: EffectFunctionContext<T1, T2, T3>, arg1?: T1, arg2?: T2, arg3?: T3, ...rest: any[]): Effect;
export function apply<T1, T2, T3>(context: any, fn: EffectFunction<T1, T2, T3>, arg1?: T1, arg2?: T2, arg3?: T3, ...rest: any[]): Effect;
export function fork(effect: Effect): Effect;
export function fork<T1, T2, T3>(fn: (arg1?: T1, arg2?: T2, arg3?: T3, ...rest: any[]) =>
Promise<any>|Iterable<any>,
arg1?: T1, arg2?: T2, arg3?: T3, ...rest: any[]): Effect;
export function fork<T1, T2, T3>(fn: EffectFunction<T1, T2, T3>, arg1?: T1, arg2?: T2, arg3?: T3, ...rest: any[]): Effect;
export function fork<T1, T2, T3>(fn: EffectFunctionContext<T1, T2, T3>, arg1?: T1, arg2?: T2, arg3?: T3, ...rest: any[]): Effect;
export function join(task: Task<any>): Effect;