对于这个项目,我使用的是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等待其结果。
谢谢
答案 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));
})
}