如何在Promise中的代码之后执行一些代码

时间:2019-08-09 16:19:31

标签: javascript promise

所以我有一些这样的代码

    fetch('url') 
    .then((response) => {
        response.json().then((Data) => {
                localStorage.setItem('var', Data.value);               
            }           
        })       
    })

    const x = localStorage.getItem('var');

由于promise的性质,getItem将在setItem之前发生。我想在诺言之外使用“ var”。有什么办法让我先执行setItem然后再执行getItem,或者还有另一种方法可以让我在promise之外获取var的值

2 个答案:

答案 0 :(得分:1)

你可以做

fetch("url").then(response => {
  response.json().then(Data => {
    localStorage.setItem("var", Data.value);
    const x = localStorage.getItem("var");
  });
});

// this needs to be in an async function
await fetch("url");
const data = await response.json();
localStorage.setItem("var", data.value);

const x = localStorage.getItem("var");

您的代码中也存在语法错误。您的}太多了

答案 1 :(得分:-1)


    fetch(url)
    .then(response => {
      do_some_code1;
      // return promise
    }).then(() => {
      do_some_code2;
    }).then(() => {
     do_some_code_some_more
    }).catch(()=>{
      handle_some_error_here
    })

您可以在异步中链接多个then方法,但也可以始终catch或适当地处理错误,否则将很难调试。享受

相关问题