所以我有這個python代碼,我試圖轉換爲node.js,但我不知道如何。蟒蛇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的不過雖然我似乎可以像,因爲它蟒蛇返回它的行事方式回調,或至少我似乎無法歸還這就是爲什麼我問我該如何做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中?另外如果你可以指點我一些關於異步代碼的很好的文檔,那也是很棒的。
我明白了,但如果我不想打印數據並想存儲它或爲其設置變量名呢?像'this.definition = definition'不會工作,因爲它會認爲這是回調函數?我會編輯我的問題來反駁這個,抱歉讓我感到困惑。 – ruler
你可以這樣做,但它必須在提取定義的函數的回調中完成。 – hexacyanide
我已經編輯了這個問題來展示我正在努力做的一個更好的例子,因爲第一個例子並沒有真正展示爲什麼我不知道如何使用異步代碼的好例子。 – ruler