Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 两类数组相乘_Javascript_Jquery - Fatal编程技术网

Javascript 两类数组相乘

Javascript 两类数组相乘,javascript,jquery,Javascript,Jquery,我正在尝试将两个数组相乘。一个数组通过$('#element').val()获取其值,另一个是通过获取GET请求的结果 控制台输出: 这是我的密码: $(“#发送1”)。单击(函数(){ var i=1; var Q_值=[]; var G_值=[]; var R_值=[]; 对于(i;i这样做: 对for块中的变量i使用let,因此它是一个单独的变量,在循环完成时仍然可以被引用,并且只有在此时才能从get调用中获得响应 使用+将val()转换为一个数字(尽管在您的情况下,这不是绝对必要的

我正在尝试将两个数组相乘。一个数组通过
$('#element').val()获取其值,另一个是通过获取GET请求的结果

控制台输出:

这是我的密码:

$(“#发送1”)。单击(函数(){
var i=1;
var Q_值=[];
var G_值=[];
var R_值=[];
对于(i;i这样做:

  • for
    块中的变量
    i
    使用
    let
    ,因此它是一个单独的变量,在循环完成时仍然可以被引用,并且只有在此时才能从
    get
    调用中获得响应

  • 使用
    +
    val()
    转换为一个数字(尽管在您的情况下,这不是绝对必要的,因为乘法和转换是动态的)

代码:

但我真的建议您研究一下承诺。这确实是一条路。幸运的是,jQuery
$.get
返回一个承诺,并且这些承诺可以传递给
$。当
时,当所有这些承诺都实现后,它将调用其
然后
方法(另请参阅)

$(“#发送1”)。单击(函数(){
var Q_值=[];
var G_值=[];
var R_值=[];
var承诺=[];

for(设i=1;i通过
val()返回的值)
始终是字符串。如果要对它们进行数学运算,则需要将它们设为数字。中介绍了实现方法。所有同时执行的
$get
之间存在异步竞争条件。循环不会将它们隔开。可以同时执行所有get,但需要等到ll将完成数据“准备就绪”。阅读一些异步和/或ajax编程教程可能会有所帮助,使用Promission和
Promission也是如此。所有的
。异步竞争条件如何?如图所示,这并不太糟糕,但如果他想将这些数组用于任何重要的事情,他需要有一种方法知道数组是正确的“准备好了吗".而他发布的代码并没有做到这一点。确实,这也是一个问题。但由于问题没有解决这一点…我只是在最后添加了一个警告。这就完成了。谢谢trincot!但现在异步竞争是痛苦的。你有没有快速的解决方案?我正在努力理解你的链接。不客气。我添加了一些代码示例,用于n如何处理异步结果。
$("#sendeS1").click(function () {
    var Q_Values = [];
    var G_Values = [];
    var R_Values = [];

    for(let i = 1; i <= 20; i++){
        $.get("bewertung/get/weight/"+i, function (weight) {
            Q_Values[i-1] = +$('#startup_1').find('.'+i).val();
            G_Values[i-1] = weight;
            R_Values[i-1] = Q_Values[i-1] * G_Values[i-1];
            console.log("Q:"+Q_Values);
            console.log("G:"+G_Values);
            console.log("R:"+R_Values);
        });
        //...etc
$("#sendeS1").click(function () {
    var Q_Values = [];
    var G_Values = [];
    var R_Values = [];
    var countDown = 20;

    for(let i = 1; i <= 20; i++){
        $.get("bewertung/get/weight/"+i, function (weight) {
            Q_Values[i-1] = +$('#startup_1').find('.'+i).val();
            G_Values[i-1] = weight;
            R_Values[i-1] = Q_Values[i-1] * G_Values[i-1];
            console.log("Q:"+Q_Values);
            console.log("G:"+G_Values);
            console.log("R:"+R_Values);
            countDown--;
            if (countDown == 0) processResults(Q_Values, G_Values, R_Values);
        });
        //...etc
$("#sendeS1").click(function () {
    var Q_Values = [];
    var G_Values = [];
    var R_Values = [];
    var promises = [];

    for(let i = 1; i <= 20; i++){
        promises.push($.get("bewertung/get/weight/"+i, function (weight) {
            Q_Values[i-1] = +$('#startup_1').find('.'+i).val();
            G_Values[i-1] = weight;
            R_Values[i-1] = Q_Values[i-1] * G_Values[i-1];
            console.log("Q:"+Q_Values);
            console.log("G:"+G_Values);
            console.log("R:"+R_Values);
        }));
        //...etc
    }
    $.when.apply($, promises).then(function() {
        // all is done, process the results here ...
    });