Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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_Request - Fatal编程技术网

Javascript 删除和获取节点的多个请求

Javascript 删除和获取节点的多个请求,javascript,node.js,request,Javascript,Node.js,Request,我正在使用请求库对本地托管的API(MailDev客户端)进行rest调用 我可以在单独运行各个组件时删除、发送和阅读电子邮件。然而,当我一起运行它时,我只能删除和发送。Get请求总是返回一个空响应 var http = require('http'); var request = require('request'); var nodemailer = require('nodemailer'); var urlStr = 'http://localhost:1080/email/all'

我正在使用请求库对本地托管的API(MailDev客户端)进行rest调用

我可以在单独运行各个组件时删除、发送和阅读电子邮件。然而,当我一起运行它时,我只能删除和发送。Get请求总是返回一个空响应

var http = require('http');
var request = require('request');
var nodemailer = require('nodemailer');

var urlStr = 'http://localhost:1080/email/all'
var options = {
    url: urlStr,
    method: 'DELETE'
};


request.del('http://localhost:1080/email/all')

var transporter = nodemailer.createTransport({
 port: 1025,
 ignoreTLS: true,
});

const mailOptions = {
  from: 'email1@googlemail.com', // sender address
  to: 'email2@yahoo.com', // list of receivers
  subject: 'Hello world', // Subject line
  html: '<p>Hello world, stay happy :)</p>'// plain text body
};

transporter.sendMail(mailOptions, function (err, info) {
   if(err)
     console.log(err)
   else
      console.log();
});

console.log("getting emails");


request('http://localhost:1080/email/',function(err,res,body){
  if(err){console.log(err);}
  console.log(body);
});
var http=require('http');
var请求=要求(“请求”);
var nodeEmailer=require('nodeEmailer');
var urlStr='1〕http://localhost:1080/email/all'
变量选项={
url:urlStr,
方法:“删除”
};
request.del('http://localhost:1080/email/all')
var transporter=nodeEmailer.createTransport({
港口:1025,
ignoreTLS:没错,
});
常量邮件选项={
发件人:'email1@googlemail.com“,//发件人地址
致:'email2@yahoo.com“,//接收者列表
主题:“Hello world”,//主题行
html:“你好,世界,保持快乐:)

”//纯文本正文 }; transporter.sendMail(邮件选项,函数(错误,信息){ 如果(错误) console.log(错误) 其他的 console.log(); }); console.log(“获取电子邮件”); 请求('http://localhost:1080/email/,函数(err、res、body){ if(err){console.log(err);} 控制台日志(主体); });
你知道为什么get请求只能单独工作吗


谢谢

您所做的是几乎同时启动所有请求。不能保证哪个请求将首先完成,因此您调用它们的顺序不能保证它们将以相同的顺序执行。尝试使用以下方法:

var http = require('http');
var request = require('request');
var nodemailer = require('nodemailer');

var urlStr = 'http://localhost:1080/email/all'
var options = {
    url: urlStr,
    method: 'DELETE'
};

var transporter = nodemailer.createTransport({
 port: 1025,
 ignoreTLS: true,
});

const mailOptions = {
  from: 'email1@googlemail.com', // sender address
  to: 'email2@yahoo.com', // list of receivers
  subject: 'Hello world', // Subject line
  html: '<p>Hello world, stay happy :)</p>'// plain text body
};

deleteEmails(function(){
  sendMail(mailOptions, function(){
    getEmails(function(res, body){
      console.log(body);
    })
  })
})

function deleteEmails(successCallback){
  request.del('http://localhost:1080/email/all', function (err){
    if(err)
      console.log(err)
    else if(successCallback) {
      successCallback()
    }
  })
}

function sendMail(mailOptions, successCallback){
  transporter.sendMail(mailOptions, function (err, info) {
    if(err)
      console.log(err)
    else if(successCallback) {
      successCallback()
    }
  });
}

function getEmails(successCallback){
  console.log("getting emails");
  request('http://localhost:1080/email/',function(err,res,body){
    if(err){
      console.log(err);
    } else {
      successCallback(res, body)
    }
  });
}
var http=require('http');
var请求=要求(“请求”);
var nodeEmailer=require('nodeEmailer');
var urlStr='1〕http://localhost:1080/email/all'
变量选项={
url:urlStr,
方法:“删除”
};
var transporter=nodeEmailer.createTransport({
港口:1025,
ignoreTLS:没错,
});
常量邮件选项={
发件人:'email1@googlemail.com“,//发件人地址
致:'email2@yahoo.com“,//接收者列表
主题:“Hello world”,//主题行
html:“你好,世界,保持快乐:)

”//纯文本正文 }; 删除电子邮件(函数(){ sendMail(邮件选项,函数(){ 获取电子邮件(函数(res、body){ 控制台日志(主体); }) }) }) 函数deleteEmails(successCallback){ request.del('http://localhost:1080/email/all,函数(err){ 如果(错误) console.log(错误) else if(成功回调){ successCallback() } }) } 函数sendMail(mailpoptions,successCallback){ transporter.sendMail(邮件选项,函数(错误,信息){ 如果(错误) console.log(错误) else if(成功回调){ successCallback() } }); } 函数getEmails(successCallback){ console.log(“获取电子邮件”); 请求('http://localhost:1080/email/,函数(err、res、body){ 如果(错误){ 控制台日志(err); }否则{ 成功回调(res,body) } }); }
这对我帮助很大,我忘了js是异步的。谢谢