React-Native:如何在另一个类中获得api调用的回调

时间:2017-05-18 04:50:49

标签: reactjs react-native callback

我正在呼叫网络服务

这是我的代码:

var result;
export function callPostApi(urlStr, params)
{
       fetch(urlStr, {method: "POST", headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
          },
          body: JSON.stringify(params)})
            .then((response) => response.json())
            .then((responseData) => {
              result = JSON.stringify(responseData)
             })
            .catch((error) => { console.error(error);

             Alert.alert('Alert Title failure' + JSON.stringify(error))
            })
            .done();
          return result
}

我在这里打电话:

callapi(){
     var dict = {
          email: 'at@gmail.com',
          password: '123456',
        }
    result = callPostApi('http://demo.com', dict)
}

目前,我们正在调用我们想要的异步模式,但是在调用上述方法后立即执行代码编写代码

我希望在收到服务器的结果后进行回调,以便我可以执行以下方法编写的代码,并在收到服务器的响应后执行。

1 个答案:

答案 0 :(得分:2)

你需要使用Promises。

更改您的callPostApi功能以返回承诺,然后您可以将其他thencatchfinally电话联系起来。

export function callPostApi(urlStr, params) {
    return fetch(urlStr, {
            method: "POST", 
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
            },
            body: JSON.stringify(params)
        })
        .then((response) => response.json())
        .then((responseData) => {
            result = JSON.stringify(responseData)
        })
        .catch((error) => { 
            console.error(error);
            Alert.alert('Alert Title failure' + JSON.stringify(error))
        });
}


callapi() {
    callPostApi('http://demo.com', {
            email: 'at@gmail.com',
            password: '123456',
        })
        .then((response) => {
            // Continue your code here...
        });
}