- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个简单的普通 JS 脚本,连接到 CoinMarketCap.com ticker API .
它应该做什么:
1) 检索硬币数据,将其存储在对象中
2) 等待 x 时间(在本例中为三分钟)
3) 重复 1),检索更新的数据
4)比较最近的数据和以前的数据
5) 如果硬币的值(value)上涨,console.log
警报
6)重复该过程
它的作用是什么:这两个对象( firstValue
和 secondValue
)是重复的。另外,当重新开始时(再次调用 main()
函数),这两个对象的内容无法更新,并显示以前的值。
// Variables
// Set first recorded value
var firstValue;
// Set second value (most recent)
var secondValue;
// Get the obj from CoinMarketCap API
function getCoinValues() {
var requestURL ="https://api.coinmarketcap.com/v1/ticker/?limit=10";
var request = new XMLHttpRequest();
request.open("GET", requestURL);
request.send();
// When loaded assign to obj variable and return it
request.onload = function getUsdValues() {
// Save data to the 'obj' object
obj = JSON.parse(request.response);
console.log("Retrieved coin data");
};
return obj;
}
// Wait
function wait(ms){
console.log("Waiting.")
var start = new Date().getTime();
var end = start;
while(end < start + ms) {
end = new Date().getTime();
}
}
// Compare two objects
function comparePrices (obj1, obj2) {
// Take price from one array, compare to the other
for (var i = 0; i < obj1.length; i++) {
// console.log(JSON.stringify(obj2[i].id) + " OLD:" + obj1[i].price_usd + "NEW:" + obj2[i].price_usd)
if (obj2[i].price_usd > obj1[i].price_usd) {
console.log(JSON.stringify(obj2[i].id) + " has increased!");
console.log("From $" + obj1[i].price_usd + " to $" + obj2[i].price_usd);
}
}
}
// Main function //
function main () {
// Get 1st coin values
console.log("Getting first values");
firstValue = getCoinValues();
// Wait
console.log("Waiting")
wait(30000);
// Retrieve new values
console.log("Getting second values")
secondValue = getCoinValues();
// Compare two sets of values
console.log("About to compare prices")
comparePrices(firstValue, secondValue);
console.log("Prices compared")
// Do it all again
// "Emptying" the variables
firstValue = null
secondValue = null
// Starting the main loop
main();
}
main();
为什么不firstValue
和secondValue
即使价格在股票行情中有效变化,也会显示不同的结果?
请原谅任何技术术语的不当使用以及整体编码新手。
最佳答案
OP 代码包含许多技术和逻辑错误。请参阅固定代码内的注释。
// Variables
// Set first recorded value
//var firstValue; //no use
// Set second value (most recent)
//var secondValue; //no use
//Save AJAX response here
var currentValue = [];
//define the const URL
var requestURL = "https://api.coinmarketcap.com/v1/ticker/?limit=10";
// Get the obj from CoinMarketCap API - wrong description
//Process request to API
function getCoinValues() {
//var requestURL = "https://api.coinmarketcap.com/v1/ticker/?limit=10";
var request = new XMLHttpRequest();
request.open("GET", requestURL);
//request.send();//dedine a handler first
request.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) { //**this** is request
var tmpObj = JSON.parse(this.responseText);
if (currentValue && tmpObj) {//compare when both arrays exist
comparePrices(currentValue, tmpObj);
}
if (tmpObj) //response received and parsed
currentValue = tmpObj;
//console.log(tmpObj);
}
}
//now it is good time to send request
request.send();
// When loaded assign to obj variable and return it
//request.onload = function getUsdValues() {
// // Save data to the 'obj' object
// obj = JSON.parse(request.response); //obj was never defined
// console.log("Retrieved coin data");
//};
//return obj; //never try to return anything from asynchronous function
}
// Wait
//Good to hang the system
/*
function wait(ms) {
console.log("Waiting.")
var start = new Date().getTime();
var end = start;
while (end < start + ms) {
end = new Date().getTime();
}
}
*/
// Compare two objects (arrays in fact)
function comparePrices(obj1, obj2) { //usage: comparePrices(current,new)
console.log(new Date().toLocaleTimeString());
// Take price from one array, compare to the other
for (var i = 0; i < obj1.length; i++) {
// console.log(JSON.stringify(obj2[i].id) + " OLD:" + obj1[i].price_usd + "NEW:" + obj2[i].price_usd)
if (obj2[i].price_usd > obj1[i].price_usd) {
//console.log(JSON.stringify(obj2[i].id) + " has increased!"); //no need to stringify.
console.log(obj2[i].id + " has increased! From $" + obj1[i].price_usd + " to $" + obj2[i].price_usd);
} else if (obj2[i].price_usd < obj1[i].price_usd) {
console.log(obj2[i].id + " has decreased! From $" + obj1[i].price_usd + " to $" + obj2[i].price_usd);
} else {
console.log(obj2[i].id + " No change $" + obj2[i].price_usd);
}
}
}
// Main function //
function main() {
getCoinValues();
setTimeout(main, 30000);//run again in 30 sec
return;
//All remaining code is wrong
//// Get 1st coin values
//console.log("Getting first values");
//firstValue = getCoinValues();
//// Wait
//console.log("Waiting")
//wait(30000);
//// Retrieve new values
//console.log("Getting second values")
//secondValue = getCoinValues();
//// Compare two sets of values
//console.log("About to compare prices")
//comparePrices(firstValue, secondValue);
//console.log("Prices compared")
//// Do it all again
//// "Emptying" the variables
//firstValue = null
//secondValue = null
//// Starting the main loop
//main();
}
main();
我本来想创建一个代码片段,但决定不这样做。
关于javascript - Xhr : API Cryptocurrency price alert script returns wrong and duplicate values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46995372/
我有一个内部表,里面有 108 个条目。从 9 到 9 个条目重复条目,我想删除这些重复项。由于它们完全相同,我使用了 delete adjacent duplicates from itab com
在 Team Foundation Server (TFS) 中链接两个工作项 (WI) 时,在什么情况下将“Duplicate”和“Duplicate Of”区分为“链接类型”是有意义的? 如何处理
ld: duplicate symbol _velocityX in \ /Users/Student/Library/Developer/Xcode/DerivedData/finalproject
我使用 PHP 和 Mysql。 此 SQL 有效: INSERT INTO products (id, title, description) VALUES (10, 'va
我有一个大数据框 (120000x40),我尝试在每一行中找到重复项并显示它们。这就是我的尝试: 创建数据框 import pandas as pd df = pd.DataFrame({'col1'
我是 mySQL 和 PHP 的新手,请多多包涵。 如果我的查询有重复字段,我该如何做到这一点,检索到的数据将具有重复查询字段的重复数据。 一个例子是这样的: 查询 id = 34, 54, 21,
我一直遇到这个错误,但我无法理解它,因为它提示一个值恰好出现一次。 Exception in thread "main" java.lang.IllegalStateException: Duplic
我有一个带有 Vuejs 和 Laravel 的 Web 应用程序 我想使用 CKEditor 5 我安装了依赖项 npm install --save @ckeditor/ckeditor5-vue
我有一个包含以下数据的 csv 文件: Id,Name,Type,date 1,name1,employee,25/04/2017 2,name2,contrator,26/04/2017 3,nam
import CKEditor from '@ckeditor/ckeditor5-react'; import ClassicEditor from '@ckeditor/ckeditor5-bui
表定义: CREATE TABLE PositionalDataNGS ( Date DATE, Time TIME(3) , X FLOAT(5), Y FLOAT(5), D FLOAT(5) ,
我目前正在做一个项目,我要处理数以千计的数据包。现在,我记录每个数据包的 IP 和 MAC 地址以及一些其他信息。为了存储所有这些,我使用 MySQL 并且我的脚本是用 Node.js 编写的。目前我
I am using MySQL 5.1.56, MyISAM. My table looks like this:我使用的是MySQL 5.1.56,MyISAM。我的桌子是这样的: CR
我是新来的,对 SQL 比较陌生。我有一个类似这样的表: [Pk], [Case_No], [Status], [Open_Date], [Close_Date], [Case_Age], [Repo
为什么会收到此警告? warning No duplicate props allowed react/jsx-no-duplicate-props# 它显示的是第28行,但没有使用 Prop 。 最
是否有任何函数或方法可以在 python 2.7 中递归实现此目的? Input : ['and', ['or', 'P', '-R', 'P'], ['or', '-Q', '-R', 'P']]
我正在分析 hadoop 中的数据。有一些重复条目,其中 A、B 列重复,而 C 列不同。我想要做的是仅识别 A、B 重复项,然后为每个重复项打印出 C 列的不同值。 示例数据: row, data
您好,感谢阅读并可能对我有所帮助 我的问题的简要说明: 我正在将数据从一个 Firebird 数据库复制到另一个(称为 V14),并且我正在使用 IBExpert 来执行此操作。这些表的名称相同并且具
我想制作一张很像下面的图片: 我想使用 seaborn 使图表看起来漂亮,并让我自己以后更容易使用 facetgrids(我有十个不同的数据集,我想在同一个图表中显示。) 我在 seaborn 中找到
我在两列“user_id”和“project_id”上有一个复合唯一键。 当我尝试对单行或多行运行 DELETE 查询时,出现错误。 ERROR 1062: 1062: Duplicate entry
我是一名优秀的程序员,十分优秀!