为什么我的函数无法从提取中获取结果?

时间:2019-04-02 03:26:04

标签: javascript reactjs es6-promise

我有一个函数(requestLogin),该函数调用另一个函数(post),该函数使用fetch从服务器获取一些JSON。

post函数可以正常工作,但不会将JSON对象返回给requestLogin。任何建议表示赞赏。

locationManager:didExitRegion:

2 个答案:

答案 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")
        }
    });
}