NodeJS Lambda函数在等待回调时返回null

时间:2017-08-22 14:40:50

标签: javascript node.js amazon-web-services aws-lambda

问题:我有一个用NodeJS编写的Lambda函数,下面是简化版本,它用于发布特定URL以获取响应正文中的值。然后我希望它在functionB中对该值执行某些操作,但是,该函数在等待来自functionA的回调时返回null。

另外,我是NodeJS的新手,但是我试着尽可能多地研究这个,然后向你们寻求帮助,如果你发现这是一个重复的问题,请指导我我之前可能遇到过很少的指导而不知道为什么它和我的问题一样。非常感谢任何帮助!

var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;

exports.handler = (event, context, callback) => {
  functionA(event.payload, function(err, data) {
    if(data) {
      console.log(data);
      valueB = data;

      functionB(valueB, function(err, data) {
        if(err) {
          console.error('Unknown Error');
        } else {
          console.log(data);
          callback(null, successMessage);
        }
      });
    } else {
      console.error('Unknown Error');
    }
  });
}

function functionA(payload, callback) {
  var xmlhttp = new XMLHttpRequest();
  var result;

  // new HttpRequest instance, in the real code storedURL has been set
  xmlhttp.open("POST", storedURL, true);
  console.info("Linking to: ", storedURL);

  xmlhttp.onload = function () {
    console.log('Entering onload function');
    if (xmlhttp.readyState === xmlhttp.DONE) {
      console.log('readyState done');
      if (xmlhttp.status === 200) {
        console.log('status 200');
       // console.log(xmlhttp.responseText);
        var data = xmlhttp.responseText;
        //console.log(data);
        callback(null, data);
      } else {
        console.log('error');
        console.log(xmlhttp.response);
        callback("error in callback");
      }
    } else {
      console.log('error');  
    }
  };

  xmlhttp.send(payload);
}

function functionB(valueB, callback) {
  //Do something with valueB
  callback(null, successMessage);
}

0 个答案:

没有答案