javascript - 多次请求删除和获取节点
问题描述
我使用请求库对本地托管的 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 请求只能孤立地工作?
谢谢
解决方案
您正在做的是几乎同时触发所有请求。不能保证哪个请求将首先完成,因此您调用它们的顺序并不能保证它们将以相同的顺序执行。尝试使用这个:
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)
}
});
}
推荐阅读
- aem - 按照命名模式在 AEM 6.3 中删除多个页面
- spring - 如何使用spring kafka批处理监听器进行有状态重试
- c# - 使用 shcemas.microsoft.com/windows/2004/02/mit/task.xsd 创建类时,xsd.exe 会出错
- docker - docker容器中的Python写权限被拒绝
- c# - 如何在不将服务注入构造函数的情况下获取服务实例
- java - 评估传递给从另一个类调用的模拟方法的参数
- javascript - 即使 Aurelia 中的代码正确,服务人员也在工作
- c - 联合在使用不同格式说明符时表现不同
- c# - 如何使用 Http.Sys 服务器启用 dotnet core 2.2 版的 http2?
- adsense - 为什么在我的网站中添加谷歌广告时,PageSpeed Insights 会减少我的校准?