У меня есть следующий код:
function someAsyncOperation(){
const myArray = [1,2,3,4,5];
return Promise.resolve(myArray);
// return Promise.reject("Reject from someAsyncOperation");
}
const random = () => {
return Math.floor(Math.random() * 10) + 1;
}
const myFunction = (item) => {
return someAsyncOperation() // this function returns an array
.then((array) => {
if(!array.includes(item)){
console.log(`The element ${item} has NOT been found inside the array`);
return myFunction(random()).then((r) => console.log(`Hello World ${r}`));
}
else{
console.log(`The element ${item} has been found inside the array`);
return item;
}
});
}
myFunction(random()).then(res => {
// success
console.log("Success", res);
}).catch(err => {
// handle error here which could be either your custom error
// or an error from someAsyncOperation()
console.log("Error", err);
});
А вот несколько примеров его результата:
1-й пример ответа
The element 10 has NOT been found inside the array
The element 8 has NOT been found inside the array
The element 7 has NOT been found inside the array
The element 5 has been found inside the array
Hello World 5
Hello World undefined
Hello World undefined
Success undefined
2-й пример ответа
The element 9 has NOT been found inside the array
Nuevo elemento random generado 10
The element 10 has NOT been found inside the array
Nuevo elemento random generado 3
The element 3 has been found inside the array
Hello World 3
Hello World undefined
Success undefined
3-й пример ответа
The element 5 has been found inside the array
Success 5
Итак, мой вопрос:
Почему иногда выводит Hello World undefined
и Success undefined
? Я имею в виду точно: что делает это then
в return myFunction(random()).then((r) => console.log(Hello World ${r}));
???
EDIT:
Точно, я ожидаю, что в return r
( ответ JaromandaX ниже ) не только найденный результат , но и история не находит результатов в порядке их появления. Вот пример того, что мне нужно:
The element 10 has NOT been found inside the array
The element 8 has NOT been found inside the array
The element 7 has NOT been found inside the array
The element 5 has been found inside the array
Hello World 10
Hello World 8
Hello World 7
Success 5