gpt4 book ai didi

node.js - 等待异步调用

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:37 25 4
gpt4 key购买 nike

我需要获取 HTML 页面的标题,我正在使用 node-metainspector .

我创建了一个模块:

var MetaInspector = require('node-metainspector');

exports.getTitle = function(url) {
var fullUrl = "http://" + url;
var inspector = new MetaInspector(fullUrl, {});
var title = '';

inspector.on('fetch', function() {
title = inspector.title;
console.log(title);
return title;
});

inspector.on('error', function(error) {
console.log(error);
});

inspector.fetch();
}

并在我的 Express 应用程序中使用它:

exports.add = function(req, res) {
var url = req.body.url;
console.log(url);
console.log(parser.getTitle(url));
}

此代码无法正常工作。 console.log(parser.getTitle(url)); 行返回 undefined。我认为原因是 JS 的异步本质。 inspector.on('fetch') 在 getTitle() 完成后调用。但我是 Node.js 新手,我不知道解决这个问题的好模式是什么。

最佳答案

您应该通过添加回调参数将 getTitle 转换为异步函数:

exports.getTitle = function(url, cb) {

// ...

inspector.on('fetch', function() {
title = inspector.title;
cb(null, title);
});

inspector.on('error', function(error) {
cb(error);
});
}

...然后这样调用它:

foo.getTitle(src, function(err, title) {
if (err) { /* handle error */ }
// Handle title
});

关于node.js - 等待异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27805226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com