有没有人有关于如何在GraphRequestManager中使用Promise的示例?
我在 Action 创建者中得到无法读取的属性,然后出现未定义的错误。
function graphRequest(path, params, token=undefined, version=undefined, method='GET') {
return new Promise((resolve, reject) => {
new GraphRequestManager().addRequest(new GraphRequest(
path,
{
httpMethod: method,
version: version,
accessToken: token
},
(error, result) => {
if (error) {
console.log('Error fetching data: ' + error);
reject('error making request. ' + error);
} else {
console.log('Success fetching data: ');
console.log(result);
resolve(result);
}
},
)).start();
});
}
我使用 Action 创建者调用上述代码
export function accounts() {
return dispatch => {
console.log("fetching accounts!!!!!!");
dispatch(accountsFetch());
fbAPI.accounts().then((accounts) => {
dispatch(accountsFetchSuccess(accounts));
}).catch((error) => {
dispatch(accountsFetchFailure(error));
})
}
}
我在控制台中收到“成功获取数据:”以及错误之前的结果。因此,API调用已成功完成。错误是在fbAPI.accounts()。then((accounts)中获取帐户之后,我认为这是由于GraphRequestManager立即返回而不是等待返回。
最佳答案
我为您提供解决方案。
我的提供者如下所示:
FBGraphRequest = async (fields) => {
const accessData = await AccessToken.getCurrentAccessToken();
// Create a graph request asking for user information
return new Promise((resolve, reject) => {
const infoRequest = new GraphRequest('/me', {
accessToken: accessData.accessToken,
parameters: {
fields: {
string: fields
}
}
},
(error, result) => {
if (error) {
console.log('Error fetching data: ' + error.toString());
reject(error);
} else {
resolve(result);
}
});
new GraphRequestManager().addRequest(infoRequest).start();
});
};
triggerGraphRequest = async () => {
let result = await this.FBGraphRequest('id, email');
return result;
}
效果很好!我让您根据自己的系统调整解决方案。
关于react-native - 在GraphRequestManager中使用Promise,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39692610/