множественный запрос на удаление и получение узла - PullRequest
0 голосов
/ 05 июня 2018

Я использую библиотеку запросов, чтобы сделать остальные вызовы API, который размещен локально (клиент MailDev)

Я могу удалять, отправлять и читать электронные письма при запуске соответствующих компонентов отдельно.Однако, когда я запускаю все это вместе, я могу только удалить и отправить.Запрос 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);
});

Есть идеи, почему запрос get работает только изолированно?

Спасибо

1 Ответ

0 голосов
/ 05 июня 2018

То, что вы делаете, запускает все запросы одновременно.Не гарантируется, какой запрос завершится первым, поэтому порядок, в котором вы их вызываете, не гарантирует, что они будут выполняться в той же последовательности.Попробуйте использовать это:

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)
    }
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...