从另一个函数javascript调用异步函数时获取未定义

时间:2020-06-18 02:52:14

标签: javascript reactjs asynchronous promise fetch

对于这个项目,我使用的是wretch,它是fetch的包装器

这是我的代码的一个突破:

我在单独的服务文件上进行了wretch调用,以将渲染功能与wretch功能分开。

我正在导出

export const wretchFunc = var => {
  return wretch(url)
    .json({
      var,
    })
    .get()
    .json()
};

问题出在第二个文件上:function2呈现wretch函数的结果,我确实解析了promise并得到了想要的结果,但是当我从function1调用它时,即使放置,返回值也是不确定的function2内的console.log给了我所需的布尔值。

我有一个function1返回:

return (function2 || function3)

和function2渲染wretchFunc的结果,如下所示:

function function2(state) {
  const var = fun(state);
  if (!var) {
    return false;
  }
  wretchFunc(var).then(json => {
    return JSON.parse(json).isTrue;
  });
}

我的假设是在接收到function2的结果之前先执行一个函数,但是我不确定该怎么做。

编辑: 我尝试这样做:

 return wretchFunc(var).then(json => {
    return JSON.parse(json).isTrue;
  });
}

这又给了我一个我可以在上层函数上解析的承诺,但是由于我有一个先前的条件if(!var)返回false,这会使函数返回2种不同的东西。有没有一种方法可以在函数2中强制转换promise的值,并强制function1等待其结果。

谢谢

1 个答案:

答案 0 :(得分:0)

尝试包装到新的Promise中并返回

function function2(state) {
  return new Promise((res, rej) => {
    const var = fun(state);
    if (!var)
      res(false);
    wretchFunc(var)
    .then(json => resolve(JSON.parse(json).isTrue)
    .catch(err) => rej(err));
  })
}