在我的案例中如何将参数传递给函数

How to pass parameter into a function in my case

我正在尝试为我的应用建立承诺。我有类似的东西

var test = function(id,companyID) {
    return getProduct(id)
        .then(getProductName(companyID))
        .then(function(obj) {
              console.log(obj)
        })
}

test('123', '456');

我只能看到一个包含空上下文的对象。但是,如果我将代码更改为不包含 getProductName 函数中的参数和硬编码,例如

var test = function(id,companyID) {
    return getProduct(id)
        .then(getProductName)
        .then(function(obj) {
              console.log(obj)
        })
}

test('123', '456');

我在 console.log

中得到了我需要的数据

我不确定如何将参数传递到链中。知道怎么做吗?非常感谢!

你尝试了吗

var test = function(id,companyID) {
    return getProduct(id)
        .then(function(){
            getProductName(companyID)
            .then(function(obj) {
                console.log(obj);
            });
        })
}

你有没有尝试过这样的事情:

    var test = function(id, companyID){
    return getProduct(id)
        .then(function(data){
            getproductName(companyID)
                .then(function(data){
                    console.log(obj);
        });
    });
};

当您不使用 getProductName(companyID) 时,它会失败,因为 companyID 未定义,因此您需要在 failHandler 中使用:

var test = function(id,companyID) {
    return getProduct(id)
        .then(getProductName)
        .then(function(obj) {//doneHandler
              console.log(obj)
        },function(obj){//failHandler
              console.log(obj);//now this gets logged
        })
}

test('123', '456');

如果您 return 来自处理程序的承诺,那么 return 从匹配 .then() 中编辑的承诺会适应该承诺,从而允许您这样做:

var test = function(id,companyID) {
    return getProduct(id)
        .then(function(){
            return getProductName(companyID)
        })
        .then(function(productName) {
            console.log(productName);
        });

}