【问题标题】:multiple request for delete and get node多次请求删除和获取节点
【发布时间】:2018-06-05 23:14:33
【问题描述】:

我正在使用请求库对本地托管的 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 请求只能单独工作?

谢谢

【问题讨论】:

    标签: javascript node.js request


    【解决方案1】:

    您正在做的是几乎同时触发所有请求。不能保证哪个请求将首先完成,因此您调用它们的顺序并不能保证它们将以相同的顺序执行。试试这个:

    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)
        }
      });
    }
    

    【讨论】:

    • 这对我帮助很大,我忘了 js 是异步的。谢谢
    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    相关资源
    最近更新 更多