私はエンターテインメントのためのチャットボットを作成しようとしています。主な機能の1つはmemeルックアップです。私は最初にPythonでこれを書いていましたが、JavaScriptで書き直しています。クライアント側で完全に実行できるようになりました。ここでDevToolsがクラッシュする原因となるスクリプト
私はJavaScript meme()
機能である:それは役立つかもしれない場合
function meme(srch) {
reqUrl = "http://api.pixplorer.co.uk/image?amount=1&size=tb&word=meme";
memesrch = "";
while (srch) {
memesrch += "+" + srch[0];
srch.slice(1);
}
reqUrl += memesrch;
$.get(reqUrl, function(result) {
memeUrl = result['images'][0]['imageurl'];
});
return "<a href='" + memeUrl + "'><img src='" + memeUrl + "' style='height: 130px;' /></a>";
}
ここで、それのためのオリジナルのPythonの関数です:
def meme(srch):
reqUrl = "http://api.pixplorer.co.uk/image?amount=1&size=tb&word=meme"
if srch:
memesrch = ""
while srch:
memesrch += srch[0] + "+"
srch = srch[1:]
memesrch = memesrch[:-1]
reqUrl += memesrch
memeUrl = eval(urllib2.urlopen(reqUrl).read())['images'][0]['imageurl']
return "<a href='" + memeUrl + "'><img src='" + memeUrl + "' style='height: 130px;' /></a>"
これで私の問題は、私が最初にmeme()
を実行したときにということですページロード/リロード後のコンソールには、変数memeUrl
は定義されていません。その後、2回目以降、正常に動作します。しかし、meme(["doge"])
と入力するか、配列に文字列を指定するか、またはmeme()
関数にmeme("hello")
のような文字列を指定しても、エラーは返されません。その後、タイプするものは何も返されません。1+1
、3
、$
のようなものでもありません。数秒後にウェブページがクラッシュします。いくつかのスクリーンショットがあります:Screenshot of DevTools、Screenshot of Webpage Crash。
この問題の原因となる可能性がある唯一のことは、無限ループですが、私のコードにはありません。
while (srch) {
...
}
srch.slice
[?私は非同期呼び出しからの応答を返すにはどうすればよい](の可能性のある重複http://stackoverflow.com/questions/14220321非同期呼び出しからの応答を返す) – Andreas
['Array.prototype.join()'](https://developer.mozilla.org/en-US/docs/ Web/JavaScript/Reference/Global_Objects/Array/join) – Andreas