
目前 在用 React 写一个大屏幕展示的项目,我把请求数据的部分抽到了另外一个文件中,但是问题来了异步请求后如何能把请求到的数据返回。 '' export function getBloodInventoryData() {
$.post("/api/" + url + "?token=" + this.token, params, function (result) { if (result.success == false) { if (result.message == "您的 token 已超期!" || result.message == "您输入的 token 无效,请输入正确的 token !") { ApiHelper.getToken(); this.getBloodInventoryData(); return; } throw new Error("1000", result.message); } var hasValue = false; for (var key in result.objects) { hasValue = true; break; } if (hasValue == false) { return; } callBackMethod(result.objects); }.bind(this)); } '' 如上代码片段,我请回来的 result 无法 return 啊
1 ituren Apr 17, 2018 callBackMethod(result.objects); 不是最后调用了这个回调方法么 在这个方法里处理就好了 |
2 VAWang Apr 17, 2018 jquery 的 AJAX 请求的参数里把 async 改成 false,就能 return 出来值了 |
3 v2xe2v Apr 17, 2018 promise? |
5 zenxds Apr 17, 2018 return 一个 promise 对象 |
6 beginor Apr 17, 2018 via Android 看到你 id,过来支持一下,代码返回 Promise,配合 async/await 比这爽多了 |
7 duan602728596 Apr 17, 2018 via iPhone Promise 配合 async/await,返回数据后修改 state |
8 jasperjia Apr 17, 2018 如果你的$是 jQuery 的话,第三个参数是回调函数,当请求成功执行,意思就是同步的(发起请求-> 请求成功 -> 执行回调函数),不用考虑异步引起的的问题。如果 result.success 和 hasValue 都不等于 false (没有 return ),callBackMethod 肯定会执行的。给出的建议:1.排查请求是否成功 2.排查result.success 是否等于 false result.objects 是否是空对象。如果都没问题的话,那就是 callBackMethod 的问题,根据经验来说,可能状态管理有问题,最终没有刷新 state,进而没有更新 DOM。 |
9 kisnows Apr 17, 2018 回调到了以后修改 state 的值,然后 render 函数里面从 state 里面去取就好了。 |