dva yield call( )无法获取到异步请求的返回数据

当前有一个异步请求函数fetchAPI

service.tsx

export async function queryData({
    id,
    name,
}: {
    id: string;
    name: string;
}): Promise<any> {
    let msg = await request('/api', {
        method: 'POST',
        data: {id:id,name:name},
    });
    if (msg.code === 200) {
        console.log(msg.result.records);   /// 能够获取到数据
        return msg.result.records;
    } else {
        message.error('获取信息失败!');
        return undefined;
    }
}

model.tsx

effects: {
        *fetchData({ payload: { id, name } }, { call, put }) {
            try {
                const response = yield call(queryData, { id, name });
                console.log(response)    ////// response没有打印
                if (response) {
                    ......
                } else {
                    ......
                }
            } catch (err) {
                message.error('发生错误:' + err);
            }
        }
}

页面调用

            dispatch({
                type: 'user/fetchData',
                payload: { id: '20d8euqf98ur9', type: '张三' }
            })

遇到的问题:queryData请求发送成功了,能够打印数据,说明接口调用正常,但是使用yield call调用queryData最终没有直接抛出数据,response没有打印,虽然可以使用yield call(queryData, { id, name }).then(res => console.log(res))获取到数据,但是为什么这里不能够直接抛出response呢,我是什么地方写得有问题吗?

阅读 3.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题