【发布时间】:2020-06-18 11:50:52
【问题描述】:
对于这个项目,我使用的是 wretch,它是 fetch 的包装器
这是我的代码的突破:
我对一个单独的服务文件进行了可怜的调用,以将渲染功能与可怜的功能分开。
我正在导出
export const wretchFunc = var => {
return wretch(url)
.json({
var,
})
.get()
.json()
};
问题出在第二个文件上:函数 2 呈现了这个可怜的函数的结果,我确实解决了承诺,我得到了我想要的结果,但是当我从函数 1 调用它时,返回值是未定义的,即使放置function2 中的 console.log 为我提供了我正在寻找的布尔值。
我有一个函数1,它返回:
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;
});
}
我的假设是函数 1 在收到函数 2 的结果之前被执行,但我不知道该怎么做。
编辑: 我试着做:
return wretchFunc(var).then(json => {
return JSON.parse(json).isTrue;
});
}
这给了我另一个承诺,我可以在上层函数上解决,但由于我有一个先前的条件 if(!var) 返回 false,这将使函数返回 2 个不同的东西。有没有办法可以在 function2 中转换 promise 的值并强制 function1 等待它的结果。
谢谢
【问题讨论】:
-
我假设在函数 2 中解决 promise 之前返回值。
-
是的,如果你看到我的编辑,函数没有返回任何东西,如果我在 wretchFun 之前添加 return 可以解决它,但问题是函数可能会返回一个布尔值,如果如果它达到第二个条件,它会达到第一个条件或承诺,如果有的话我可以解决这个问题。
-
你为什么要调用 .json 两次而不是 wretch call ?根据文档,还有 resolve() 方法,您可以在 .get().json().resolve() 之后调用它?
标签: javascript reactjs asynchronous promise fetch