話不多說,先上原始碼,中介軟體意味著要滿足redux中介軟體正規化
()=>(next)=>(action)=>) )
return
next
=>
action
=>
const
result =
next(
action)
// hit reducers
sagaemitter.
emit(
action)
return
result }
} 後面主要研究 saga 是如何利用中介軟體屬性來完成非同步操作的。
各種effect優先順序 及處理函式
return (
// non declarative effect
is.promise(
effect) ?
resolvepromise(
effect,
currcb) :
is.helper(
effect) ?
runforkeffect(
wraphelper(
effect),
effectid,
currcb) :
is.iterator(
effect) ?
resolveiterator(
effect,
effectid,
name,
currcb)
// declarative effects
: is.
array(
effect) ?
runparalleleffect(
effect,
effectid,
currcb)
: (data =
aseffect.
take(
effect)) ?
runtakeeffect(
data,
currcb)
: (data =
aseffect.
put(
effect)) ?
runputeffect(
data,
currcb)
: (data =
aseffect.
all(
effect)) ?
runalleffect(
data,
effectid,
currcb)
: (data =
aseffect.
race(
effect)) ?
runraceeffect(
data,
effectid,
currcb)
: (data =
aseffect.
call(
effect)) ?
runcalleffect(
data,
effectid,
currcb)
: (data =
aseffect.
cps(
effect)) ?
runcpseffect(
data,
currcb)
: (data =
aseffect.
fork(
effect)) ?
runforkeffect(
data,
effectid,
currcb)
: (data =
aseffect.
join(
effect)) ?
runjoineffect(
data,
currcb)
: (data =
aseffect.
cancel(
effect)) ?
runcanceleffect(
data,
currcb)
: (data =
aseffect.
select(
effect)) ?
runselecteffect(
data,
currcb)
: (data =
aseffect.
actionchannel(
effect)) ?
runchanneleffect(
data,
currcb)
: (data =
aseffect.
flush(
effect)) ?
runflusheffect(
data,
currcb)
: (data =
aseffect.
cancelled(
effect)) ?
runcancelledeffect(
data,
currcb)
: (data =
aseffect.
getcontext(
effect)) ?
rungetcontexteffect(
data,
currcb)
: (data =
aseffect.
setcontext(
effect)) ?
runsetcontexteffect(
data,
currcb) :
/* anything else returned as is */
currcb(
effect) )
}
Redux saga 中介軟體
之前我們使用redux thunk 把非同步 放到了action 裡面,這個解決了自動化測試的一些問題以及 的拆分管理。redux saga 也是做非同步 拆分的中介軟體,可以把它將 redux thunk 互換。我們要使用redux saga,先把之前redux thunk 相關 刪掉。然後,我們...
中介軟體 訊息中介軟體學習總結
冪等 在程式設計中.乙個冪等操作的特點是其任意多次執行所產生的影響均與一次執行的影響相同。冪等函式,或冪等方法,是指可以使用相同引數重複執行,並能獲得相同結果的函式。這些函式 不會影響系統狀態,也不用擔心重複執行會對系統造成改變。例如,getusername 和settrue 函式就是乙個冪等函式....
中介軟體作業
主要檔案的 fctrl client linux.c this is sample code generated by rpcgen.these are only templates and you can use them as a guideline for developing your ow...