在另一个承诺中从承诺中返回价值

时间:2016-12-09 13:33:49

标签: javascript promise

有很多关于如何从承诺中回报价值的问题,但我没有看到任何回答我的问题。

这是我的功能:

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(){...});
}

如何在此配置中返回d

1 个答案:

答案 0 :(得分:2)

我认为你在寻找

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(){...});
}

或写得更好

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);
    });
}