JavaScript承诺 - 价值范围

时间:2015-08-10 12:44:26

标签: javascript promise

我正在尝试用JavaScript学习承诺。一件令我困惑的事。那篇文章是范围界定的。为了了解承诺,我正在构建一个小应用程序。该应用程序具有视图,后面的一些代码和视图模型。我的代码背后是这样的:

codeBehind.js

var viewModel = new (require('./viewModel'))();
exports.viewLoaded = function(args) {
  viewModel.load()
    .then(function() {
      console.log('promise fulfilled.');
      console.log('Title: ' + viewModel.title);
    })
  ;
};

如上面的代码段所示,引用了一个名为viewModel.js的文件。那个文件看起来像这样:

viewModel.js

function ViewModel() {
    this.isLoading = false;
    this.title = '[TODO]';
}
ViewModel.prototype = {};

ViewModel.prototype.load = function() {
    console.log('loading...');
    return new Promise(function (resolve, reject) {
        try {
            console.log('processing the promise.');
            this.isLoading = true;
            this.title = 'LOADED';
            resolve();
        }
        catch (ex) {
            reject(ex);
        }
    });     
};
module.exports = ViewModel;

执行codeBehind.js viewLoaded函数时,我在控制台窗口中看到以下内容:

loading...
processing the promise.
promise fulfilled.
Title: [TODO]

我很困惑。我期待它说" Title:LOADED"。我觉得有些事我对承诺有误解。我究竟做错了什么?为什么不说"标题:加载"。

0 个答案:

没有答案