问题描述
是否有更多的“本机”方法代替waitForTask
?
import { createEffect } from 'effector'
const runTestTask = createEffect({
async handler (name) {
// Simulating long task
await new Promise(resolve => setTimeout(resolve,10000));
return { name };
}
});
function waitForTask (cb) {
if (runTestTask.pending.getState()) {
const unsub = runTestTask.doneData.watch(() => {
unsub();
cb({ ... });
});
} else {
cb({ ... });
}
}
解决方法
是的,效果本身具有四个字段 .done-处理程序解决后立即发出的事件 .fail-处理程序被拒绝后立即发出的事件 .finally-处理程序完成后立即发出的事件
如果我们谈论数据流,最简单的情况如下:
const $testStore = createStore({})
*here is your effect snippet*
$testStore.on(runTestTask.done,(prevState,payload) => payload)
OR
forward({
from: runTestTask.fail,to: showFailPopup
})
我写了article来解决常见的误解