ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaScript-在匿名和异步功能上绑定此关键字

2019-10-30 02:38:41  阅读:246  来源: 互联网

标签:parse-platform mongodb asynchronous promise javascript


JavaScript中,我正在寻找在匿名和异步函数上使用bind()的方法.

例:

exports.foo = function () {};

exports.foo.prototype = {
  load : function(id) {
    var query = new Parse.Query("SomeObject");
    query.get(id).then(function(object) {
      this.object = object; // this is the wrong this
    });
  }
};

我通过使函数成为非匿名函数来完成这项工作,但是我认为这会使我的代码看起来丑陋.特别是连续拥有4个不同的匿名函数之后.

exports.foo = function () {};

exports.foo.prototype = {
  load : function(id) {

    function _load(object) {
      this.object = object;
    }
    var _loadThis = _load.bind(this);

    var query = new Parse.Query("SomeObject");
    query.get(id).then(_loadThis);
  }
};

有没有更好的办法?

解决方法:

好吧,它不一定“更好”,但是您可以在函数实例化表达式的右括号后直接调用.bind():

query.get(id).then(function(object) {
  this.object = object; // this is the wrong this
}.bind(this));

函数实例化表达式为您提供了一个函数对象引用,因此放置了.之后,调用bind是有意义的.因此,传递给.then函数的是从对.bind的调用返回的值.

标签:parse-platform,mongodb,asynchronous,promise,javascript
来源: https://codeday.me/bug/20191030/1964637.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有