我有一个函数(requestLogin),该函数调用另一个函数(post),该函数使用fetch从服务器获取一些JSON。
post函数可以正常工作,但不会将JSON对象返回给requestLogin。任何建议表示赞赏。
locationManager:didExitRegion:
答案 0 :(得分:1)
fetch API返回一个Promise,由您的post函数返回。
您应该处理函数返回的promise,而不是使用回调来处理结果。
例如:
post(path, json).then((result2) => {
console.log("*** RESULT2=" + result2);
if (result2.result === 'ok') {
console.log("server json return valid result")
}
});
答案 1 :(得分:0)
此过程与您的过程相同,但是您在requestLogin
函数中以错误的方式使用了回调。您需要在发布函数中访问该callBack
方法参数,并在callBack
方法中传递json结果
function post(path = "", json = "", callBack) {
let url = "/" + path;
return fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: json,
})
.then(response => response.json())
.then(json => {
//passing json result in callBack method instead of returning
callBack(json);
});
}
function requestLogin(path, mobile, pwd) {
let data = {
"mobile": mobile,
"pwd": sha256(pwd)
}
let json = JSON.stringify(data);
post(path, json, (result2) => {
if (result2.result === 'ok') {
console.log("server json return valid result")
}
});
}