稍微偏离主题 - 但发送虚拟邮件可能是“危险的”。
如果您尝试发送到不存在的本地地址,许多服务器会“注意”。例如 - 如果服务器的域是“whatever.com”并且您发送到一个随机地址,比如 aaa@whatever.com,并且“aaa”不是有效用户,那么服务器会注意到这一点。
然后,服务器可能会采取措施,例如在一段时间内阻止您作为发件人。(这有助于减少来自字典攻击的垃圾邮件。)因此,您的“测试”最终有效地阻止了真实邮件的传递。
反之亦然。假设您尝试发送到您知道有效的外部地址(例如您自己的电子邮件地址)作为测试。在这种情况下,发件人地址必须是有效的内部地址。如果您使用无效的内部地址,或者更糟糕的是不是内部地址,则服务器可能会拒绝发送邮件(最好的情况),最坏的情况是再次建立临时阻止。
这两种情况的关键因素是,尽管 SMTP 协议非常“松散”,但 SMTP 服务器非常密切地监视“不良行为”,因为这是区分垃圾邮件程序的一种方法。因此,任何“不正确”行为的隐藏都可能导致它任意拒绝接受您的邮件(通常是在有限的时间内)。
顺便说一句,回到你原来的问题。您的两个测试几乎都是即时的。即使电子邮件服务器位于世界的另一端,您也可以在几秒钟内完成两项检查。因此,即使您将 2 个数据包发回给用户,它们也会显示为“一起到达”。由于来自浏览器的 1 个请求只能处理来自服务器的 1 个响应,因此您需要以 2 个数据包的形式发送响应。
即做第一个测试 - 发送响应的第一部分 - 做第二个测试 - 发送响应的第二部分。
对于普通的 HTTP 数据包,这没什么大不了的。在第一个响应准备好之后执行某种刷新/发送,然后在第二个响应之后再次执行。浏览器用于在部分页面到达时显示它们。
但是,对于 AJAX 请求,您需要在相当低的级别进入您的框架。据我所知,大多数框架都要求传入的异步数据包在开始解析之前“完成”。如果数据包被格式化为 xml 格式尤其如此,其中部分解析在几乎所有情况下都是无用的。