Вам необходимо вернуть обещание от sumOfPromises. Так как в вашем коде у вас нет оператора return в sumOfPromises javaScript, то неявно возвращают undefined, поэтому вы в конечном итоге получаете такой вызов
undefined.then(callback('sum')); // which is an error
P_1 is : p_1
P_2 is : <span id=p_2>p_2</span>
Sum is : <span id=sum>sum</span>
обещание_1 (). Затем (обратный вызов ('p_1')); promise_2 (), а затем (обратный вызов ( 'p_2')). sumOfPromises () затем (обратный вызов ( 'сумма')). функция обратного вызова (тег) {const result = obj => {let e = document.getElementById (tag); e.inner HTML = obj; }; возврат результата} function sumOfPromises () {const promises = [обещание_1 (), обещание_2 ()]; return Promise.all (обещания) .then (function (data) {return sumOfData (data)})} function sumOfData (data) {const [p_1, p_2] = data; console.log ('вход sumOfData p_1' + p_1); console.log ('вход sumOfData p_2' + p_2); вернуть новое Promise ((решить) => {var result = p_1 + p_2; console.log ('sumOfData result' + result); resol (result)}); } функция обещание_1 () {возврат нового Promise ((resol) => {постоянное значение = Math.random (); console.log ('обещание_1 значение' + значение); resol (значение);})} функция обещание_2 () { вернуть новое обещание ((разрешить, отклонить) => {постоянное значение = - Math.random (); console.log ('значение обещания_2' + значение); разрешить (значение);})}