Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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 http请求调用?_Javascript_Nativescript_Nativescript Vue - Fatal编程技术网

如何嵌套javascript http请求调用?

如何嵌套javascript http请求调用?,javascript,nativescript,nativescript-vue,Javascript,Nativescript,Nativescript Vue,我正在努力进行一个调用,在单击按钮时,将向http请求传递一个值。第一个请求的结果被解析出来,然后在第二个http调用中使用。我可以通过以下方式接到第一个工作电话: { import config from "../config.json"; const httpModule = require("tns-core-modules/http"); ... let value1 = makeApi1Call(rawValue); let value2 = makeA

我正在努力进行一个调用,在单击按钮时,将向http请求传递一个值。第一个请求的结果被解析出来,然后在第二个http调用中使用。我可以通过以下方式接到第一个工作电话:

 {
   import config from "../config.json";
   const httpModule = require("tns-core-modules/http");
   ...
   let value1 = makeApi1Call(rawValue);
   let value2 = makeApi2Call(value1);

  makeApi1Call(rawValue) {

  let aValue = null;
  httpModule.request({
     url: url1+rawValue,
     method: "GET"
  }).then((response) => {
     let status = response.statusCode;
     if (status === 200) {
        let content = JSON.parse(response.content);
        aValue =  content[0].aValue;
        console.log("===>received aValue : " + aValue);
        return aValue;
      }  else if (status === 404) {
         console.log("===> returned [404] ... returning null " );
         return aValue;
      }
   }, (e) => {
      console.log("===> Error occurred " + JSON.stringify(e));
     return aValue;
   });
}
自然地,由于http响应在对它的调用之后完成,因此返回的值为null。我可以在控制台日志中看到它,但是现在使用它已经太晚了。我尝试添加一个回调方法来进行第二次http调用,但我没有掌握它。我不确定是否应该在status==200块中进行第二次api调用,或者是否有更好的javascript,我仍在学习这种方法


  let value1;
  let value2;

  makeApi1Call(rawValue) {

  let aValue = null;

  httpModule.request({
     url: url1+rawValue,
     method: "GET"
  })
  .then((response) => {
      value1 = response.someData
   })
  .then(() => {
      value2 = makeAPIcall2(value1)
   }


我更改了您的代码,以便至少在第一次调用完成之前,您的第二次调用不会启动。

如果makeApi1Call返回了httpModule.request返回的承诺,那么您可以简单地使用承诺链,您可以详细说明吗?我真的在为承诺、回电而挣扎。我明白了这个概念,但我似乎无法将其组合在一起以挽救我的生命。请参见如何使用httpModule.request{…}。然后响应=>{这是一个承诺链…返回函数返回的值只需在第一个函数中进行后续XHR调用,然后,在解析数据之后,返回之前,我想了解所有关于承诺的信息,您可以使用它。一旦您了解承诺,您就可以轻松地处理异步请求。谢谢,我能够嵌套我的HTTP ca我将通过@Manoj提供的链接更深入地挖掘承诺。