Задать вопрос
@Zewkin
Я у мамы фронтэндер

Почему не резолвится промис?

Cобственно, вот.
Куда копать, что читать? Спасибо.

var dc = function(data) {

    return new Promise(function(resolve, reject) {

        var filename = 'Test';

        var contract = function() { ... }

        var policy = function() { ... }

        var invoice = function() { ... }
        
        contract().then(invoice().then(policy().then(function() {
            console.log(filename); // Test
            resolve(filename); // UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): ReferenceError: filename is not defined
        })))
    })
}
  • Вопрос задан
  • 1071 просмотр
Подписаться 1 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 1
risentveber
@risentveber
fullstack web developer
then(policy().
вместо этого возможно нужно написать
then(policy).
А вообще без кода функций contract, policy, invoice трудно судить, к тому же если contract возвращает promise - можно обойтись без создания внешнего promise.

UPDATE: переписал бы так
function dc(data) {
    var filename = 'Test';

    function contract() {
    	return new Promise(function(resolve, reject) {
    		var stream = ...

     		stream.on('finish', function() {
                console.log('stream is done');
                resolve();
            });

        })
    }

    function policy() {
    	var stream = ...
    	var filename = ...

        return new Promise(function(resolve, reject) {
            stream.on('finish', function() {
                console.log('Policy is done');
                resolve(filename);
            });

        })
    }

    function invoice() {
    	var stream = ...

        return new Promise(function(resolve, reject) {
            stream.on('finish', function() {
                console.log('Invoice is done');
                resolve();
            });
        })
    }

    return contract().then(invoice).then(policy).then(function() {
        console.log(filename);
        return filename;
    }).catch(function(error){ console.error(error); });
}


P.S. читать лучше YDKJS
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы