下面的异步函数应该检查 url 是否是合法的 url
let CheckUrl = function (url, done) {
dns.lookup(url, function(err, address) {
if (err) return done(err);
done(null, true); //return true because I don't care what the address is, only that it works
});
}
下面的express.js代码获取了url,但我无法理解如何编写if语句以使其返回true或false。
// Gets URL
app.post("/api/shorturl/new", function(req, res) {
if (CheckUrl(req.body.url)) {
// do something
}
});
我不确定在这个 if 语句中的 CheckUrl() 中传递什么作为第二个参数。或者也许我一开始就错误地编写了第一个异步函数?
最佳答案
我给你写了一个测试代码如下:
const express = require('express');
const app = express();
const dns = require('dns');
let CheckUrl = function (url, done) {
return new Promise((resolve, reject) => {
dns.lookup(url, function(err, address) {
console.log("err " , err)
if (err) {
resolve(false)
} else {
resolve(true)
}
});
});
}
app.post("/api/shorturl/new", async function(req, res) {
try {
let result = await CheckUrl(req.body.url);
console.log("result " , result)
res.send(result)
}
catch (error) {
console.log("in catch error " , error)
res.send(error)
}
});
app.listen(3000)
关于Node.js - 如何使用回调调用异步函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60314287/