如何嵌套javascripthttp请求调用?

how to nest javascript http request calls?

我正在努力进行调用,以便在单击按钮时将值传递给 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)
   }

我更改了您的代码,这样至少您的第二个调用在第一个调用完成之前不会触发。