首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

redux-saga api yield调用有效,但未返回任何数据

redux-saga是一个用于管理应用程序副作用(例如异步请求和数据获取)的库。它基于Generator函数和yield关键字,可以让开发者以同步的方式编写异步逻辑。

在redux-saga中,通过使用yield关键字来调用API请求或其他异步操作。当yield调用生效时,saga会暂停执行,等待异步操作完成后再继续执行。这样可以确保异步操作的顺序和结果的可控性。

然而,如果yield调用有效但未返回任何数据,可能有以下几种可能的原因:

  1. 异步操作尚未完成:yield调用后,saga会等待异步操作完成并返回结果。如果异步操作尚未完成,那么yield调用将不会返回任何数据。在这种情况下,可以检查异步操作的实现,确保其能够正确返回数据。
  2. 异步操作返回的数据为空:有时,异步操作可能会成功完成,但返回的数据为空。这可能是因为后端服务返回的数据为空,或者在数据处理过程中出现了问题。在这种情况下,可以检查后端服务的响应,以及数据处理的逻辑,确保数据能够正确返回。
  3. 异步操作出现错误:如果异步操作在执行过程中出现错误,那么yield调用可能会有效但未返回任何数据。在这种情况下,可以检查异步操作的错误处理逻辑,确保错误能够被正确捕获和处理。

总结起来,当redux-saga的yield调用有效但未返回任何数据时,需要检查异步操作的完成状态、返回数据以及错误处理逻辑,以确保异步操作能够正常执行并返回正确的数据。

关于redux-saga的更多信息和使用示例,可以参考腾讯云的相关产品文档:redux-saga

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

redux-saga学习

,所有的任务都通过用 yield Effects 来完成 ( effect可以看作是redux-saga的任务单元 ) redux-saga启动的任务可以在任何时候通过手动来取消,也可以把任务和其他的Effects...实际上,无论是 put 还是 call 都不执行任何 dispatch 或异步调用,它们只是简单地返回 plain Javascript 对象。...(即高级 API) Effect 创建器 以下每个函数都会返回一个普通 Javascript 对象(plain JavaScript object),并且不会执行任何其它操作。...它接受当前 state 和一些可选参数,并返回当前 Store state 上的一部分数据。 args: Array – 传递给选择器的可选参数,将追加在 getState 后。...阻塞调用/非阻塞调用 阻塞调用的意思是,Saga 在 yield Effect 之后会等待其执行结果返回,结果返回后才会恢复执行 Generator 中的下一个指令。

2.7K10

深入理解 redux 数据流和异步过程管理

但是 context 做为 store 有一个问题,任何组件都能从 context 中取出数据来修改,那么当排查问题的时候就特别困难,因为并不知道是哪个组件把数据改坏的,也就是数据流不清晰。...异步过程的管理 很多情况下改变 store 数据都是一个异步的过程,比如等待网络请求返回数据、定时改变数据、等待某个事件来改变数据等,那这些异步过程的代码放在哪里呢? 组件?...的参数里: const login = (userName) => (dispatch) => { dispatch({ type: 'loginStart' }) request.post('/api...} from 'redux-saga/effects' function* rootSaga() { yield all([ takeLatest('login', login)...generator 执行后返回的是一个 iterator,需要另外一个程序调用 next 方法才会继续执行。所以怎么执行、是否继续执行都是由另一个程序控制的。

2.4K10

react项目架构之路初探

,整体数据结构比较混乱 项目简介 项目是一个简单的示例的demo 本项目目的在于让更多的读者去了解这种模式,体会这种设计思想 所有数据均为mock的假数据,仅供学习之用,不做任何商业用途。...数据流通的关系:通过Store中的这个对象提供的dispatch方法 =》 触发action=》改变State =》 导致其相关的组件 页面重新渲染 达到更新数据的效果 核心Api以及相关的功能源码分析...,thunks 是在action被创建时调用,而 Sagas只会在应用启动时调用 redux-thunk中间件可以让action创建函数先不返回一个action对象,而是返回一个函数,函数传递两个参数...可以用这两点来提现:持久化的数据结构和结构共享 详情可以参考这篇文章 在此不做赘述 npm地址以及api介绍:https://www.npmjs.com/package/seamless-immutable...代码最后的put 执行到reducer中设置state中分页数据和每页的返回数据 export function * init () { while (true) { const action

2.4K10

手写Redux-Saga源码

这个action会触发一个请求,请求返回数据拿来显示在页面上就行: import React from 'react'; import { connect } from 'react-redux';.../api'; function* fetchUserInfo() { try { const user = yield call(fetchUserInfoAPI); yield...然后看看fetchUserInfo函数,这个函数也不复杂,就是调用一个API函数fetchUserInfoAPI去获取数据,注意我们这里函数调用并不是直接的fetchUserInfoAPI(),而是使用了...获取数据后,我们调用了put去发出FETCH_USER_SUCCEEDED这个action,这里的put类似于Redux里面的dispatch,也是用来发出action的。...我们调用的effects和真正实现功能的函数是分开的,表层调用的effects只会返回一个简单的对象,这个对象描述了当前任务,他是稳定的,所以基于effects的单元测试很好写。

1.7K30

dva

借鉴自elm和choo,包括elm的subscription和choo的设计理念 elm的subscription 通过订阅一些消息来从其它数据源取数据,比如websocket connection of...自身有没有做到就不好说了(从choo的实现上没看出来有什么拆除堡垒的有效措施) 在API设计上,dva-core差不多保持最小化了: 一份model仅4个配置项 API屈指可数 hook差不多都是必须的...put({ type: SHOW, payload: { namespace, actionType } }); yield effect(...args); yield put(...围绕一个连接点的增强,如方法调用。这是最强大的一种增强类型。环绕增强可以在方法调用前后完成自定义的行为。...它也负责选择是继续执行连接点,还是直接返回它们自己的返回值或者抛出异常来结束执行 (摘自AOP(Aspect-Oriented Programming)) 这里的实际作用是onEffect把saga包一层

1.9K50

2022社招React面试题 附答案

HOC 自身不是 React API 的一部分,它是一种基于 React 的组合特性而形成的设计模式。具体而言,高阶组件是参数为组件,返回值为新组件的函数。...在这里,"render"的命名可以是任何其他有效的标识符。...作为props传递给调用者,将渲染逻辑交给调用者。...,Reducer会返回新的State State—旦有变化,Store就会调用监听函数,来更新View 以 store 为核心,可以把它看成数据存储中心,但是他要更改数据的时候不能直接修改,数据修改更新的角色由...rxjs和⼀整套思想 体积庞⼤: 体积略⼤,代码近2000⾏,min版25KB左右 功能过剩: 实际上并发控制等功能很难⽤到,但是我们依然需要引⼊这些代码 ts⽀持不友好: yield⽆法返回TS类型

2K50

2021高频前端面试题汇总之React篇

HOC 自身不是 React API 的一部分,它是一种基于 React 的组合特性而形成的设计模式。具体而言,高阶组件是参数为组件,返回值为新组件的函数。...在这里,"render"的命名可以是任何其他有效的标识符。...作为props传递给调用者,将渲染逻辑交给调用者。...,Reducer会返回新的State State—旦有变化,Store就会调用监听函数,来更新View 以 store 为核心,可以把它看成数据存储中心,但是他要更改数据的时候不能直接修改,数据修改更新的角色由...rxjs和⼀整套思想 体积庞⼤: 体积略⼤,代码近2000⾏,min版25KB左右 功能过剩: 实际上并发控制等功能很难⽤到,但是我们依然需要引⼊这些代码 ts⽀持不友好: yield⽆法返回TS类型

2K00

一文梭穿Vuex、Flux、Redux、Redux-saga、Dva、MobX

我们发现 Generator 函数的很多代码可以被延缓执行,也就是具备了暂停和记忆的功能:遇到yield表达式,就暂停执行后面的操作,并将紧跟在yield后面的那个表达式的值,作为返回的对象的value...想象成开了一个以最快速度不断地调用 next 方法并尝试获取所有 yield 表达式值的线程。...action (使用刚才返回的 Promise.then) yield put(SHOW_DATA_ACTION, {data: data}); } 这里用了好几个yield,简单理解,也就是每个...yield 都发起了阻塞,saga 会等待执行结果返回,再执行下一指令。...也就是相当于take、put、call、put 这几个方法的调用变成了同步的,上面的全部完成返回了,才会执行下面的,类似于 await。

5.4K10
领券