Прежде всего, не resolve
объекты, это не так безопасно, потому что свойство then
используется Обещанием, если это функция.
Объекты, возвращенные так, как показано, детализированы (симя переменной) когда console.log
ing ...
Но давайте предположим, что пока ваше обещание не разрешит ваш объект, какой-то метод добавляет / заменяет then
в вашем объекте на метод, тогда у вас будут некоторыеотладка, чтобы сделать на эти обещания.
Подробнее о thenable objects here
Я пытаюсь найти свой код и хочу создать отдельную функцию для каждого .then ()
Я создал собственный метод, который передает значения Promise.all по порядку для каждого .then
.
Ваш запрос создать отдельную функцию для каждого .then
.Просто скопируйте метод вставки useIfFor
и переименуйте / измените его по своему желанию.
PS: Некоторые фрагменты из вашего кода все еще находятся там ... они безвредны.
console.clear();
let module = {};
module.exports = () => {
return new Promise((resolve, reject) => {
const settings = {}; //blob();
var {
someObject
} = JSON.parse(typeof requestBody !== 'undefined' ? requestBody : '[]');
let somePromises = [
Promise.resolve('some text'),
Promise.resolve(100),
Promise.resolve(10000),
];
// var var1, var2, var3
let stackVariables = [];
// It passes the first value from Promise.all to the first 'then'
// the 2nd value to the 2nd `then`
// the 3rd value to the 3rd `then`
// ...
// the N-th value to the N-th `then`
const useIfFor = (someStringOrNumber) => {
return (res) => {
// We'll use the first value of `res` and pass the rest of the values to the next `then`
let [promiseValue, ...restOfTheValues] = res;
// START HERE - To add your logic - `promiseValue` is your old 'res'
console.log('Current `then` value:', promiseValue, '| Label:', someStringOrNumber);
if (someStringOrNumber === 'my-first-then') {
promiseValue = 'THIS VALUE IS MODIFIED';
stackVariables.push(promiseValue); // first value from Promise.all
} else if (someStringOrNumber === 'my-second-then') {
stackVariables.push(promiseValue); // second value from Promise.all
} else if (someStringOrNumber === 'my-third-then') {
stackVariables.push(promiseValue); // third value from Promise.all
} else {
// You can end it with resolve anywhere
//resolve(stackVariables);
}
// END HERE
if (typeof promiseValue === 'undefined') {
// You reached the end, no more values.
resolve(stackVariables);
}
// Passing the remaining values to the next `then`
return restOfTheValues;
}
}
Promise.all(somePromises)
.then(useIfFor('my-first-then'))
.then(useIfFor('my-second-then'))
.then(useIfFor('my-third-then'))
.then(useIfFor('done')) // <- here is the resolve because there isn't the 4th promise, therefore, no values
.catch((err) => {
reject(err);
})
});
};
(module.exports)()
.then(res => {
console.log('res', res);
}).catch(console.error);