首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从浏览器索引的数据库获取数据,然后调用api。

从浏览器索引的数据库获取数据,然后调用api。
EN

Stack Overflow用户
提问于 2020-06-30 03:16:31
回答 1查看 81关注 0票数 1

我有以下useEffect回调函数:

代码语言:javascript
运行
复制
import { initDB, useIndexedDB } from "react-indexed-db";
initDB(DBConfig);

const db = useIndexedDB("reads");

    useEffect(() => {
        db.getByIndex("hash", props.match.params.id).then((data) => {
          setToken(data.token);
        });
        handleTextColorSelection(backgroundColor);
        axios
          .post(`${process.env.REACT_APP_API_URL}khatma/read`, {
            khatma: props.match.params.id,
            part: props.match.params.part,
            section: props.match.params.section,
            token: token,
          })
          .then((res) => {
        
            if (res.data.token) {
              db.add({
                hash: props.match.params.id,
                token: res.data.token,
              }).then(
                (event) => {},
                (error) => {
                  console.log(error);
                }
              );
            }
    })

在axios post body中,我正在发送令牌,如果" token“状态接收到之前存储在浏览器索引数据库中的值,如果没有找到对象存储数据,则post令牌将作为null发送。

这里的问题是,我注意到在db.getByIndex(“散列”,...命令获得一个结果,运行一个axios请求,并将一个令牌作为null发送,尽管稍后令牌状态将获得一个值。

我如何运行db.getByIndex(“散列”,如果它完成了,运行axios post请求?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-30 03:31:05

您可以使用.then

代码语言:javascript
运行
复制
const axiosRequest = () => { /* your axios logic */ };

db.getByIndex(...).then(axiosRequest).catch(axiosRequest)

您在thencatch回调中所做的任何操作都将在getByIndex调用之后运行

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62645236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档