【问题标题】:Setting items in constructor in a ES6 Class [duplicate]在 ES6 类的构造函数中设置项目 [重复]
【发布时间】:2018-10-12 06:03:01
【问题描述】:

我有一个名为 Basket 的简单类,我想用 ajax 方法设置我的产品。请看下面的例子:

class Basket
{

    constructor()
    {
        this.products = [];
        this.setProducts();
        console.log(this.products); // still empty
    }

    setProducts()
    {
        var self = this;
        $.ajax({
            'url': getProductsUrl,
            'method': 'GET',
            success: function(resp) {
                console.log(resp.products); // I can see products returned from api
                self.products = resp.products
            },
            error: function(resp) {
                // err
            }
        });
   }

问题是产品没有设置。 resp.products 变量以正确的 json 格式返回。

【问题讨论】:

  • 如果产品被记录,那么它们分配给self。为什么你说他们没有设置?另外,如果你使用Class,你应该使用箭头函数而不是self = this
  • @CertainPerformance 产品无法记录,因为它们当时还没有被检索到
  • 但是你的评论说// I can see products returned from api。那个评论真的不是真的吗? (如果不是,最好将其删除以清楚起见)

标签: javascript ecmascript-6 es6-class


【解决方案1】:

AJAX 是异步,这意味着脚本在继续执行下一个任务之前不会等待 AJAX 完成执行(它已脱离正常执行流程)。您在 AJAX 完成之前记录值;您必须在成功回调中记录值。

【讨论】:

  • @CertainPerformance 他说在constructor登录时products是空的。
  • 哦,原来是这个问题,谢谢
猜你喜欢
  • 2015-12-01
  • 2018-05-11
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 2020-01-31
  • 1970-01-01
  • 2017-01-03
相关资源
最近更新 更多