dmx
dmx

Reputation: 1990

Return value from promise in another promise

There are quit a lot of questions about how to return value from promises, but I don't see any that answers my question.

this is my function:

function f1(arr, num) {
    return new Promise(function(resolve, reject) {
        resolve(data);
    }).then(function(data){
        f2.then(function(d){
            // how to return d 
        }).catch(...);

        function f2(data){
            return new Promise(function(resolve, reject){
                data = data + 1
                resolve (data);
            });
        };
    })
    .catch(function(){...});
}

How can I return d in this configuration ?

Upvotes: 1

Views: 1285

Answers (1)

Bergi
Bergi

Reputation: 665344

I think you are looking for

function f1(arr, num) {
    return new Promise(function(resolve, reject) {
        resolve(data);
    }).then(function(data){
        return f2(data).then(function(d){
//      ^^^^^^ don't forget this
//               ^^^^^^ call the function
            return d;
//          ^^^^^^^^^ simply and literally return d 
        }).catch(...);

        function f2(data){
            return new Promise(function(resolve, reject){
                data = data + 1
                resolve (data);
            });
        };
    })
    .catch(function(){...});
}

or written better as

function f1(arr, num) {
    return Promise.resolve(data)
    .then(f2)
    .catch(function(){...});
}

function f2(data){
    return new Promise(function(resolve, reject){
        … // do some async work
        resolve(data + 1);
    });
}

Upvotes: 2

Related Questions