【发布时间】:2017-03-28 04:44:07
【问题描述】:
const handleStatus = (ref, error = "Unknown error") => {
ref.child("status").on("value", snapshot => {
const status = snapshot.val();
if (status === SUCCESS) {
ref.child("status").off();
return Promise.resolve(error);
} else if (status !== PENDING) {
return Promise.reject(error);
}
});
};
export default class Database {
/**
* @desc create character
* @type {Promise}
*/
static create = async (uid = "", username = "", gender = "", race = "") => {
try {
const ref = database.ref(`/void/create/${uid}`);
await ref.set({ username, gender, race, status: PENDING });
await handleStatus(ref, "Unable to create character, please try again latter");
} catch (e) {
return Promise.reject("Username already taken");
}
};
}
我遇到了上述代码的问题,尤其是handleStatus 在Database.create() 函数中立即解析。我希望它仅在满足 if (status === SUCCESS) (或其他声明)时解决,这通常需要一些时间从 .on("value") 函数(如果您感兴趣,来自 firebase,但与问题无关)。目前它立即解决,if 语句中没有任何内容被执行并且Database.create() 仍然返回,我不知道为什么。
【问题讨论】:
标签: javascript asynchronous promise async-await