我是 RTK 查询的新手,正在努力解决必须实现的用例。
场景:我必须合并两个 API 调用的结果:第一个 API 调用是私有 API 调用,而第二个 API 调用是公共 API 调用。我需要合并这两个 API 的响应,并将计算结果写入 RTK 缓存,以便 UI 可以相应更新。
问题:我发现一旦调用await queryFullfilled,RTK 查询就会立即将来自该 API 调用的响应写入其缓存,然后当我进行计算并尝试使用缓存更新 RTK 缓存时,缓存apiSlice.util.updateQueryData将再次更改。这意味着 UI 将渲染两次,第一次使用错误的值(人员数组),第二次使用正确的值(由 id 和实体组成的 JSON)。
问题:有没有办法只向 RTK 缓存写入 1 次,这样我就可以得到我需要的计算值?array因为发生的情况是,在某些情况下,我需要JSON才能进入缓存{ids: [...], entities: {}}。
import { createEntityAdapter } from '@reduxjs/toolkit';
import axios from 'axios';
export const personsAdapter = createEntityAdapter();
const permitsInitialState = personsAdapter.getInitialState();
export const apiSlice = myServiceApi.injectEndpoints({
endpoints: (builder) => ({
getPersons: …Run Code Online (Sandbox Code Playgroud) 我已经在我的一个项目中集成了 RTK 查询,并且我试图了解如何处理我的表的 UI。我已经阅读过其他 StackOverflow 问题(例如那个问题),但我无法找到我的用例的答案。
我的表格行对其有操作,因此用户可以直接从表格页面编辑或删除行项目。
我正在使用以下 RTK 查询挂钩:
// To fetch the data that populates the table.
// 'isLoading' is used to show the spinner all over the table
const {data, isLoading} = useGetItemsQuery()
// To trigger the edit of the item.
const [triggerEditItem] = useEditItemMutation({fixedCacheKey: 'edit-item-' + data.id})
// To get when the editing is happening
const [, {isLoading: isEditing}] = useEditItemMutation({fixedCacheKey: 'edit-item-' + data.id})
Run Code Online (Sandbox Code Playgroud)
这是我的切片:
serviceApi.injectEndpoints({
endpoints: (builder) => ({
getItems: builder.query({
providesTags: [TAGS.ITEMS], …Run Code Online (Sandbox Code Playgroud) 我有一个非常基本的问题,如果我在谷歌上搜索错误,或者答案是否太简单以至于我没有看到,我不知道。
我正在使用hls.js作为 Javascript 库实现一个 Web 应用程序,我需要一种方法来获取直播流的绝对经过时间,例如,如果用户在 10 分钟后加入直播,我需要一种方法来检测用户的第一个直播时间第二个是流媒体的第 601 秒。
检查流片段,我发现了一些信息,例如 startPTS 和 endPTS,但所有这些信息始终与检索到的块而不是整个流块相关,例如,如果用户在 10 分钟后加入直播并且块持续时间为 2 秒,则第一个我将得到的块将具有 startPTS = 0 和 endPTS = 2,我将得到的第二个块将具有 startPTS = 2 和 endPTS = 4 等等(将值四舍五入到最接近的整数)。
有没有办法从 HLS 直播中提取我需要的绝对经过时间?
我想了解社区对有关前端和后端验证的特定场景的意见。
网上有很多资源可以解释为什么 REST API 应该始终存在后端和前端验证。我正在实现一个模式,要求用户插入其电子邮件以启用关键资源的删除。该信息仅用于启用删除按钮,而不是我需要存储在某处的信息。是否应该将此信息传递到后端以执行后端验证?
我个人的想法是,同时进行前端和后端验证总是一个好主意,但我试图了解在这种情况下,后端验证可能毫无价值。
我已经阅读了分布式TensorFlow文档以及有关StackOverflow的问题,但我仍然对可以使用TensorFlow及其参数服务器体系结构进行分布式培训背后的动力有些怀疑。这是来自分布式TensorFlow文档的代码片段:
if FLAGS.job_name == "ps":
server.join()
elif FLAGS.job_name == "worker":
# Assigns ops to the local worker by default.
with tf.device(tf.train.replica_device_setter(
worker_device="/job:worker/task:%d" % FLAGS.task_index,
cluster=cluster)):
# Build model...
loss = ...
global_step = tf.contrib.framework.get_or_create_global_step()
train_op = tf.train.AdagradOptimizer(0.01).minimize(
loss, global_step=global_step)
Run Code Online (Sandbox Code Playgroud)
这是我阅读的StackOverflow问题的部分答案:
工作程序从PS任务并行读取所有共享模型参数,并将它们复制到工作程序任务。这些读取与任何并发写入均不协调,并且不会获取任何锁:尤其是该工作程序可能会看到一个或多个其他工作程序的部分更新(例如,可能已应用了来自另一工作程序的更新的子集,或元素的一个子集)中的变量可能已更新)。
工作者根据一批输入数据和在步骤1中读取的参数值在本地计算梯度。
工作人员使用由优化算法(例如SGD,带有动量的SGD,Adagrad,Adam等)确定的更新规则,将每个变量的梯度发送到适当的PS任务,并将梯度应用于它们各自的变量。更新规则通常使用(大约)交换操作,因此它们可以独立地应用于来自每个工作程序的更新,并且每个变量的状态将是接收到的更新序列的运行汇总。
我必须在另一个环境中重现这种参数服务器架构,并且我需要深入了解TensorFlow框架内worker和PS任务之间如何交互。我的问题是,PS任务在从工作人员那里收到值后会执行某种合并或更新操作,还是只存储最新的值?仅仅存储最新的值可以合理吗?查看TensorFlow文档中的代码,我发现PS任务只是执行一个join(),我想知道此方法调用的背后是PS任务的完整行为。
还有一个问题,计算梯度和应用梯度之间有什么区别?
reactjs ×3
rtk-query ×2
asynchronous ×1
backend ×1
distributed ×1
elapsedtime ×1
express ×1
hls.js ×1
python ×1
rest ×1
tensorflow ×1
web-frontend ×1