umi中使用yield call 执行promise函数 发表于 2019-09-17 | 更新于 2022-09-02 | 分类于 javascript | 阅读次数: 12345678910111213141516171819//invoke 为一个promise 函数export function get_account_auth(authKey) { const arg = { authKey }; return invoke("account_auth", arg) .then(resp => resp.data.token) .catch(onError);} ======effects: { *getAuthKey({ payload }, { call, put, race, select, take }) { const resp = yield call(IndexApi.getAuthKey, {}); //call(fn,...arg) const token = yield call(Get_account_auth, resp.data.authKey); yield put(StateAt.index({ authKey: resp.data.authKey, token })); },}, 下面 dva 的典型 model 例子123456789101112131415161718192021222324252627app.model({ namespace: "todo", state: [], reducers: { add(state, { payload: todo }) { // 保存数据到 state return [...state, todo]; } }, effects: { *save({ payload: todo }, { put, call }) { // 调用 saveTodoToServer,成功后触发 `add` action 保存到 state yield call(saveTodoToServer, todo); yield put({ type: "add", payload: todo }); } }, subscriptions: { setup({ history, dispatch }) { // 监听 history 变化,当进入 `/` 时触发 `load` action return history.listen(({ pathname }) => { if (pathname === "/") { dispatch({ type: "load" }); } }); } }}); 交个朋友吧 点滴分享,您的支持将极大的鼓励我! 打赏 本文作者: PenZ 本文链接: http://yoursite.com/2019/09/17/umi中使用call-执行promise函数/ 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!