javascript - 如何处理程序的异步执行?
问题描述
如何获得下面提到的异步函数的有序执行
文件one.js
const request = require("request")
makerequest = function() {
let value = false;
request("http://www.google.com", function(err, response, body) {
if(err)
console.log("Error", err)
else if(response && body)
{
console.log("response is valid")
console.log("body is valid")
}
value = true
})
return value
}
exports.makerequest = makerequest
文件two.js
const one = require("./one")
post("passed string", function() {
console.log("one")
result = one.makerequest()
console.log("result", result)
console.log("two")
})
function post(str, callback) {
console.log(str)
callback()
}
这是我得到的结果
passed string
one
result false
two
response is valid
body is valid
这是我想要得到的结果
passed string
one
response is valid
body is valid
result true
two
我也尝试使用async/await
,但它们也没有成功。
解决方案
这就是我为获得所需输出所做的事情
one.js
const request = require("request")
makerequest = function() {
let value = false;
return new Promise(function(resolve, reject) {
request("http://www.google.com", function(err, response, body) {
if(err)
console.log("Error", err)
else if(response && body)
{
console.log("response is valid")
console.log("body is valid")
}
value = true
resolve(value)
})
})
}
module.exports = makerequest
two.js
const makerequest = require("./one")
post("passed string", async function() {
console.log("one")
result = await makerequest()
console.log("result", result)
console.log("two")
})
function post(str, callback) {
console.log(str)
callback()
}
但是,有一件事我仍然没有得到。当我编写resolve(value)
外部 request
函数调用时,promise 不会以预期的方式运行。对此有何解释?它还在里面Promise
。
推荐阅读
- c# - WebClient 仅针对该网站返回 403 错误?
- docker-compose - Azure IoT Edge - 从模块到主机网络设备的通信
- java - 为基于 testng 的框架进行测试用例清理的最佳方法
- c# - Quartz.net Core 中的依赖注入找不到已注册的服务
- angular - Angular 8 惰性路由解析有无前缀并在父级之前重定向
- java - BuildProperties Spring Boot 2.1.5 & eclipse 的 Autowired 失败
- node.js - 理想时繁琐的连接池返回401错误
- php - 如何删除多步变量会话数组
- azure-sql-database - 将 Microsoft Forms 数据写入 Azure SQL
- solr - 为 Open Documents 索引 last_modified 字段的问题