6

node.jsとライブラリTranslateを使用しています。このようなことはできますか?:


function traduce(text){
    translate.text(text,function(err,result){
        return result;
    });
}

そして、その結果を使用しますか?それは常に私に「未定義」を返します。これを行わずに結果を使用する方法はありますか?:。


translate.text(text,function(err,result){
     // use result
     // some logic
});

4

3 に答える 3

4

関数を実行しているのではなく、無名関数への参照を渡しています。戻り値が必要な場合は、次のように実行します。

function traduce(text){
    translate.text(text, (function(err,result){
        return result;
    })());
}
于 2011-02-19T22:10:14.580 に答える
3

それはあなたがそれをすることができるということはそれほど問題ではありません、しかしあなたはそれをするべきです。それは本当に非同期コードを理解することの問題であり、node.jsのすべての紹介がある程度深くカバーしているものです。

Translate自体はgoogleapiを使用するため、別のサーバーにリクエストを送信します。結果を待つとしたら、ブロック操作に時間がかかり、望ましくありません。

于 2011-02-19T22:11:52.437 に答える
-1

彼らは30の言語の翻訳を提供しています。つまり、翻訳はWebサービスを呼び出すことによって行われるということですよね?たぶん、node.jsは他のいくつかの言語のように「waitFor」のようなものを提供します。しかし、あなたが書いたように、それは達成可能ではありません

于 2011-02-19T22:09:48.973 に答える