【发布时间】:2017-10-25 13:13:49
【问题描述】:
在这里我宣布了我的承诺。
const fetchmessage= new Promise(
(resolve,reject)=>{
this.props.authStore.verifyLocalToken();
console.log("VLT Resolve");
resolve("Completed");
}
);
fetchmessage.then(this.props.inboxStore.inboxMessageFetch(mobileNumber,firebaseToken));
以下是我的verifyLocalToken代码
verifyLocalToken() {
console.log("VerifyLT - Start");
fetch('http://xxx.xxx.xxx.xxx:8000/api/VerifyLocalToken', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: `mobileNumber=${this.mobileNumber}&key=${this.key}`
}).then((response) => response.json()).then(
(responseJson) => {
console.log("http request v l t --", responseJson);
this.firebaseToken = responseJson.firebaseToken;
}).catch(
(error) => {
console.error(error);
}
)
console.log("VerifyLT - Stop");
}
以下是我的 inboxMessageFetch 代码
inboxMessageFetch(mobileNumber,firebaseToken) {
console.log("InboxFetch --", `${mobileNumber}/inbox`,firebaseToken);
firebase.database().ref(`${mobileNumber}/inbox`)
.on('value', snapshot => {
console.log('FB', snapshot.val());
})
}
不应该 http request v l t 在 InboxFetch -- 8891468710/inbox undefined 之前,因为 HTTP 请求属于 promise 和我们要求在获取 HTTP 请求后运行收件箱提取?
如何重构代码并确保HTTP请求完成,然后调用收件箱获取函数?
【问题讨论】:
-
但是...这是一个 javascript 承诺
-
是的,它是.. Javascript 承诺有什么问题?
-
它按预期工作,你只是期望它像它不工作一样工作:) 否则,你声称 ES6 本机代码中存在一个基本错误,直到现在才不知何故被忽视?
-
我不知道。我希望我的代码按预期运行。我找不到我的代码有任何问题。这就是为什么我问 SO,顺便说一下,我不明白为什么我的问题被否决了。我们不应该在 SO 上问这样的问题吗?
-
不是真的,因为这是官方文档中解释的内容,这意味着您在发布之前没有进行研究。
标签: javascript ecmascript-6 es6-promise