变量无法通过承诺访问

时间:2016-05-19 13:32:14

标签: javascript promise

我有一个奇怪的场景,我不知道是什么造成了这种情况。 我有一个函数,它返回一个承诺和链,然后'然后'方法。 在then方法中,我可以访问其中一个外部变量,但另一个是未定义的。

我认为我可能会在'然后'中使用该名称。函数和由于提升值是未定义的,但没有。

这是我的案例的简化版本,想知道可能导致这种情况的原因:

class MessageSender {
    constructor(){
    }

    sendMessage(message, options) {
        return somethingThatReturnPromise()
            .then(function (response) {
                // parameter 'message' is object as it should be,
                // but'options' is undefined.
                return response;
            })
        return promise;
    }
}

由于

1 个答案:

答案 0 :(得分:0)

似乎工作正常。

function sendMessage(message, options) {
    return somethingThatReturnPromise()
    .then(function (response) {
        console.log('message: ' + message);
        console.log('options: ' + options);
        return response;
    });
}

function somethingThatReturnPromise(){
    return new Promise(function(resolve, reject){
        setTimeout(function(){
            resolve();
        }, 100);
    });
}

console.log('Starting...');
sendMessage('THE MESSAGE', 'THE OPTIONS').then(function(){
    console.log('All done.');
});

返回

me@pc:~/dev/test$ node asdf.js 
Starting...
message: THE MESSAGE
options: THE OPTIONS
All done.