Это не указано в качестве такого обещания, поэтому вы должны предположить, что это не так.
Хорошее правило с любой спецификацией - не давать обещаний, которые не требуются для разумного использования , поэтому вы более свободны, чтобы улучшить ситуацию позже.
Действительно, в документации Random
говорится:
Текущая реализация класса Random основана на Donald E Алгоритм генератора случайных чисел Кнута.
blockquote>Обратите внимание на фразу «текущая реализация», подразумевая, что она может измениться в будущем. Это очень убедительно свидетельствует о том, что не существует обещания быть совместимым между версиями, но нет никакого намерения.
Если спецификация требует последовательных псевдослучайных чисел, то она также должна указать алгоритм как начальное значение. Действительно, даже если
Random
был задан как предоставление такого обещания, что, если вам понадобится реализация не-.NET всей или части вашей спецификации или что-то, что взаимодействует с ней, в будущем?
Вы должны понимать, что .then передает результаты / ошибки следующему .then / catch . Вы не указали обратный вызов для .catch ; все, что вы делаете, это вызываете Alert.alert () сразу после .then .
Таким образом, вы должны иметь
someAsyncOperation(params)
.then(function(result){
// Do something with the result
})
.catch(function(error){
// Handle error
});
Также обратите внимание, что все ваши .then , кажется, ничего не возвращают.
Нашли решение. Просто передал Alert.alert () в функцию стрелки в .catch. Вот так:
function onBuy() {
const email = firebase.auth().currentUser.email;
const ref = firebase.firestore().collection('parties').doc(String(name)).collection('users').doc(String(email));
const ref2 = firebase.firestore().collection('users').doc(String(email));
ref.get()
.then((doc) => {
if (!doc.exists) {
ref2.get()
.then((doc2) => {
if (doc2.exists) {
ref.set({
firstname: doc2.data().firstname,
lastname: doc2.data().lastname,
phone: doc2.data().phone
}).then(
ref2.update({ parties: firebase.firestore.FieldValue.arrayUnion(name) }).then(
Actions.pop()))
.catch(() => Alert.alert('error', 'oops, something went wrong'));
}
}).catch(() => Alert.alert('error', 'Sorry, something went wrong'));
}
else {
Alert.alert('Purches fails', 'You have already bought a ticket to this party!');
}
})
.catch(() => Alert.alert('fails', 'user problem'));
}