Странное поведение в JavaScript Promise - PullRequest
0 голосов
/ 28 сентября 2018

Учитывая фрагмент кода ниже,

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

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

Теперь вызывая функцию два, возвращается обещание, в котором отсутствует customKey

function three(){
    return one();
}  

Но при выполнении того же действия в функцииТретий (без обработки успеха, используя 'then'), возвращает обещание, в котором есть 'customKey'.

Может кто-нибудь объяснить мне, что на самом деле происходит и почему?

1 Ответ

0 голосов
/ 28 сентября 2018

Как вы можете видеть из "Документов Mozilla" then метод возвращает новый Promise (например: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then).

Если вы хотите назначить функцию для извлечения / выполнения чего-либо в функции разрешения, сделайте этокак это:

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

    resolve(customKeyFunction);
})

Теперь вы можете вызывать эту функцию так:

function two() {
    return one().then(customKey => {
        customKey();
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...