javascript Promise中的奇怪行为

时间:2018-09-28 11:35:29

标签: javascript es6-promise

考虑下面的代码段

function one(){
    var prm = new Promise(function(resolve,reject){

    });
    prm.customKey = function(){
    }
    return prm;
}
function two(){
    return one().then(function(){
        //something
    });
}

现在调用函数2,返回一个缺少'customKey'的诺言

function three(){
    return one();
}  

但是在函数三中做同样的事情(没有使用'then'处理成功), 返回其中包含“ customKey”的promise。

有人可以澄清我的真实情况和原因吗?

1 个答案:

答案 0 :(得分:3)

从“ Mozilla Docs”中可以看到,then方法返回新的Promise(例如:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then)。

如果您想分配一个函数来检索/在resolve函数中执行某些操作,请按以下步骤操作:

var prm = new Promise((resolve, reject) => {
    let customKeyFunction = () => {
        console.log("I'm custom key function.");
    };

    resolve(customKeyFunction);
})

从现在开始,您可以像这样调用此函数:

function two() {
    return one().then(customKey => {
        customKey();
    })
}