如何创建一个跟踪股价的Javascript对象?

马克西米利安太阳报

我想制作一个可以跟踪多个库存对象并显示有关它们的基本信息(即它们的价格)的程序。

我有这段代码可以成功检索股票价格:

function getStock(symbol, callback){
          var url = 'https://query.yahooapis.com/v1/public/yql';
    var data = encodeURIComponent("select * from yahoo.finance.quotes where symbol in ('" + symbol + "')");

    $.getJSON(url, 'q=' + data + "&format=json&diagnostics=true&env=http://datatables.org/alltables.env")
        .done(function (data) {
       result = data.query.results.quote.LastTradePriceOnly;
           callback(result);
        })
        .fail(function (jqxhr, textStatus, error) {
            var err = textStatus + ", " + error;
            console.log('Request failed: ' + err);
        });
}

getStock("goog", function(){alert(result)});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我希望能够创建一个可以跟踪股票的简单对象。但是,我在异步和JSON请求方面遇到了问题。这是带有“ stock”对象的代码:

function getStock(symbol, callback) {
  var url = 'https://query.yahooapis.com/v1/public/yql';
  var data = encodeURIComponent("select * from yahoo.finance.quotes where symbol in ('" + symbol + "')");

  $.getJSON(url, 'q=' + data + "&format=json&diagnostics=true&env=http://datatables.org/alltables.env")
    .done(function(data) {
      result = data.query.results.quote.LastTradePriceOnly;
      callback(result);
    })
    .fail(function(jqxhr, textStatus, error) {
      var err = textStatus + ", " + error;
      console.log('Request failed: ' + err);
    });
}

function stock(symbol) {

  this.price = 0;

  getStock(symbol, function(result) { //this function is my callback
    console.log(result);
    this.price = result;
  });

  this.printPrice = function() {
    alert("The price is: " + this.price);
  }
}


var s = new stock("goog");
$("#button").click(function() {
  s.printPrice()
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="button">Print Price</button>

您可能会注意到,我尝试使用回调似乎是解决此问题的合适方法(对Javascript来说是新的)。但是,它似乎实际上并没有设置class变量。在控制台中,它确实会打印正确的价格,但似乎并没有更改“ this.price”(这是我需要执行的操作)

关于为什么这样做不起作用或如何创建“ updateStockPrice()”方法的任何建议都将非常有帮助。

罗伯托·诺维洛(RobertoNovelo)

您正在呼叫的这个

s.printPrice()

不再在同一范围内可以使用

alert("The price is: " + this.price);

因此,添加对缩写的引用以this进一步访问您的类中的变量:

var that = this;

function getStock(symbol, callback) {
  var url = 'https://query.yahooapis.com/v1/public/yql';
  var data = encodeURIComponent("select * from yahoo.finance.quotes where symbol in ('" + symbol + "')");

  $.getJSON(url, 'q=' + data + "&format=json&diagnostics=true&env=http://datatables.org/alltables.env")
    .done(function(data) {
      result = data.query.results.quote.LastTradePriceOnly;
      callback(result);
    })
    .fail(function(jqxhr, textStatus, error) {
      var err = textStatus + ", " + error;
      console.log('Request failed: ' + err);
    });
}

function stock(symbol) {

  var that = this;
  
  that.price = 0;

  getStock(symbol, function(result) { //this function is my callback
    console.log(result);
    console.log("1");
    that.price = result;
  });

  that.printPrice = function() {
    alert("The price is: " + that.price);
  }
}


var s = new stock("goog");
$("#button").click(function() {
  s.printPrice()
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="button">Print Price</button>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何创建一个复杂的Javascript对象

创建一个JavaScript对象

Javascript。如何创建一个创建对象的循环,然后将这些对象推入数组?

如何使用一个共享密钥从两个对象数组创建一个对象数组 - JavaScript

在 pygame 中,如何创建一个跟踪调整事件大小和对象坐标的数据结构?

Javascript对象。如何创建一个在同一对象内调用函数的按钮

如何从JavaScript中的另一个对象创建自定义对象

如何创建一个输出对象列表和对象属性列表的javascript函数?

如何创建一个新对象继承 JavaScript 中的现有对象?

从Javascript中的对象数组创建一个对象

Javascript:在JavaScript中从另一个对象创建一个深度嵌套的对象

创建一个邮件对象并在已发送的文件夹中进行跟踪

如何从特定的另一个对象创建对象

AngularJS / JavaScript从另一个对象创建一个新对象

如何从 JSON 数据为每个对象创建一个页面 - JavaScript

如何创建一个可以访问函数及其对象的 JavaScript 包装器?

如何创建一个 javascript 对象以通过 export.module 导出?

如何从对象中提取pin属性并在JavaScript中创建一个pin数组?

如何创建一个可以在javascript中的对象上调用的函数

如何在 javascript 中创建一个深度嵌套的对象?

如何创建一个JavaScript函数来查找彼此嵌套的对象和数组

我如何创建一个函数来检查对象JavaScript数组中的布尔字段

在javascript中,如何创建一个遍历所有对象的for循环?

如何在属性值上创建一个没有双引号的javascript对象

使用 JavaScript,如何遍历 2 个 JSON 对象,比较它们的字段并根据比较创建一个新的 JSON 对象?

创建一个javascript对象并将其绑定

JavaScript在输入上循环创建一个对象数组

从两个数组创建一个JavaScript对象

创建一个Javascript对象的新实例