Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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_Node.js_Asynchronous - Fatal编程技术网

Javascript 围绕异步函数包装函数,以提取值并分配给全局变量

Javascript 围绕异步函数包装函数,以提取值并分配给全局变量,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,如标题所示,我是否可以放置以下异步函数: callArgos("fifa 17", function(title, price) { console.log("Argos title " + title + " price " + price); }) 在另一个函数中,例如: function foo() { callArgos("fifa 17", function(title, price) { console.log("Argos ti

如标题所示,我是否可以放置以下异步函数:

callArgos("fifa 17", function(title, price) {
    console.log("Argos title " + title + " price " + price);
})
在另一个函数中,例如:

     function foo() {
       callArgos("fifa 17", function(title, price) {
          console.log("Argos title " + title + " price " + price);
       })
     }  
然后调用函数foo,返回title和price,并将它们分配给全局变量

我有三个单独的异步函数,它们从三个不同的网站获取价格,并通过回调这些函数返回价格。然后,我希望将返回的值分配给全局变量,以便比较所有三种价格。我不确定这在JS和Node.JS中是否可行


你们觉得怎么样

当然。看看这把小提琴。这对你有用吗


使用回调,在第一个函数中传递第二个函数的引用,并在执行第一个函数后调用它。如果这是jquery ajax函数,那么您可以只调用。在这些方法上完成,否则您需要为用户定义的函数创建一个延迟对象,并解析这些延迟对象以通知订阅者,您真的想使用promises和Promise.all为此,我可以放置以下异步函数YES!!如果你有一台时间机器,那就是。
// Prices will be stored here
var prices = [];

// Dummy-function to mock async behaviour
function callArgos(someString, someCallback) {
  setTimeout(function() {
    someCallback(someString, 42);
  }, Math.random()*100);
}

// Actual function
function foo() {
  callArgos("fifa 15", function(title, price) {
    prices[0] = price;
    console.log("Argos title " + title + " price " + price, prices);
  });

  callArgos("fifa 16", function(title, price) {
    prices[1] = price;
    console.log("Argos title " + title + " price " + price, prices);
  });

  callArgos("fifa 17", function(title, price) {
    prices[2] = price;
    console.log("Argos title " + title + " price " + price, prices);
  });
}  

// Execute function
foo();