javascript - python 到 node.js 的混淆

标签 javascript python node.js

所以我有这个Python代码,我试图将其转换为node.js,但我不知道如何转换。

import urllib.request, re
def getDef(word):
    link = "http://www.merriam-webster.com/dictionary/%s" % word
    data = urllib.request.urlopen(link).read().decode()
    try:
        return re.search("<p>: (.*?)</p><p>", data).group(1)
    except:
        return "No match"
 class newDefinition:
     def __init__(self, word):
         self.definition = getDef(word);
 >>> definition = newDefintion("color")
 >>> print(definition.definition)
a quality such as red, blue, green, yellow, etc., that you see when you look at something

在node.js中,尽管如此,我似乎可以像在python中一样返回它,因为它是回调方式做事,或者至少我似乎无法返回它,这就是为什么我问我该怎么做Node.js 等效还是它们没有等效?这是我到目前为止所做的,也许你可以发现我做错了什么以及如何解决它

var urllib = require("urllib"); // installed with npm
var getDef = function(word){
    var link = "http://www.merriam-webster.com/dictionary/" + word;
    var urlData = urllib.request(link, {}, function(err, data, res){
        var re = new RegExp("<p>: (.*?)</p><p>");
        var results = data.toString();
        var match = re.exec(results)[1];
        return match; // Expected it to give urlData the definition
    });
    return urlData;
}
var Definition = function(word){
    this.definition = getDef(word);
}
definition = new Definition("color");
console.log(definition.definition); // this won't give the definition but the information of the urllib itself rather.

所以总的来说,试图弄清楚如何使用异步代码,这样我就可以返回我需要的东西,但我也不习惯这个概念,那么Python中是否有与此等效的东西?另外,如果您能为我指出一些关于异步代码的优秀文档,那就太好了。

最佳答案

由于 return 实际上只是退出函数而不是返回值,因此您需要使用回调。它看起来像这样:

var urllib = require("urllib");
var getDef = function(word, callback){
  var link = 'http://www.merriam-webster.com/dictionary/' + word;
  urllib.request(link, {}, function(err, data, res) {
    var re = new RegExp('<p>: (.*?)</p><p>');
    var results = data.toString();
    var match = re.exec(results)[1];
    callback(match);
  });
};

然后您将在调用该函数时传递回调:

getDef('color', function(definition) {
  console.log(definition);
});
<小时/>

编辑:设置对象的属性具有相同的想法。它可能看起来像这样:

var Definition = function(word) {
  var self = this;

  getDef(world, function(definition, callback) {
    self.definition = definition;
    callback.call(self);
  });
};

并且会这样调用:

var definition = new Definition('color', function() {
  console.log(definition.definition);
});

关于javascript - python 到 node.js 的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20557890/

相关文章:

javascript - 如何在不影响同一列中其他元素的情况下在表列中添加动态元素

javascript - 调用函数时,返回未定义

python - 我无法制作我理想的 DataFrame

python - 从 pandas 列的字符串列表中删除数字

javascript - 如何在 Node.js 中等待函数完成?

node.js - 使用密码导出 AWS Cognito 用户

node.js - NodeJS 中断言的用途

javascript - 有效的 JSON 文件可以仅包含一个对象的描述吗?

javascript - 从数组中获取对象的值并将其与 id 值匹配

Python:使用多个文件进行 Nose 测试