如何解决对于Javascript中的解析,承诺不以同步方式工作
我正在使用reactJs并在JS中使用promise时遇到问题。
我正在编写对API的提取调用,然后将响应返回给组件。在组件中,我的编写如下所示。
let response= {};
const promise = new Promise((resolve,reject) => {
resolve(response= fetchCallApi(request));
});
promise.then((result) =>{
console.log('result',result);
console.log('2',response);
console.log("3");
});
FetchCallApi是我用不同的Js编写的函数,它将具有fetch方法并返回响应。注意:我也将js的console.log语句也放置在api的响应中。
在Output Console中,即使在promise.then函数中的控制台语句之后,也将获得作为空对象的结果,并且fetch api调用的控制台输出也会打印出来。
如果我已经有了诺言,那么它应该首先解析fetchAPIcall并打印该调用中的控制台消息,然后再进入诺言。然后打印两个console.log语句。
有人可以指导为什么会这样吗?以及如何获取带有值而不是空对象的响应?
注意:我什至尝试了async / await但没有运气,可以请一些人分享在这种情况下可以使用的代码
编辑1 :为fetchCallApi添加代码以清楚地了解我的问题
const fetchCallApi = (request) => {
let output = {} ;
fetch('someUrl').then(resp => {
if (resp) {
output = resp.response;
console.log('1 ',output);
}
}).catch(error => {
console.log(error);
});
return output ;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。