我具有要等待的结果,然后使用它的功能:
getUserId = () => {
fetch("https://www.dummysite.com/mobile/person-id", {
credentials: "include",
method: "GET",
headers: {
Cookie: this.state.auth_token_res
}
}).then(res => {
let id_obj = JSON.parse(res._bodyText);
console.log("parsed json", id_obj);
return id_obj.data;
});
};
我想在此功能中使用它:
async sendID() {
let user_id = await this.getUserId();
console.log(user_id);
OneSignal.sendTags({
user_id: user_id
})
.then(function(tagsSent) {
// Callback called when tags have finished sending
console.log("tag is set: ", tagsSent);
})
.catch(err => {
console.log("error", err);
});
}
我没有看到任何语法问题,并且该应用程序得以编译,但是当它启动时,它只是如何处理此错误:
另一个奇怪的是,如果我在此屏幕上打开远程调试,则会收到另一个错误: error 2
这里说await不是在异步函数中,而是在异步函数中,并且在编辑器或Metro bundler中没有语法错误。
答案 0 :(得分:1)
您可能会错过一些事情。考虑这些变化。尽管我没有机会进行测试,但我相信它会起作用,或者至少会使您步入正轨。
getUserId = () => {
// return fetch in order to await
return fetch("https://www.dummysite.com/mobile/person-id", {
credentials: "include",
method: "GET",
headers: {
Cookie: this.state.auth_token_res
}
}).then(res => res.json());
};
// make this an arrow function
sendID = async () => {
try {
let user_id = await this.getUserId();
// after printing then decide what to do here;
console.log(user_id);
const tagsSent = await OneSignal.sendTags({
user_id: user_id
});
console.log(tagsSent);
} catch (err) {
console.log(err);
}
}