2017-11-19 1 views
0

보류중인는 Nodejs

const translate = require('google-translate-api'); 

async function translateSentence(sentence, languebase, languagetranslation) { 
    var sentenceTranslated = await translate(
     sentence, 
     { from: languebase, to: languagetranslation }); 

    return sentenceTranslated.text; 
} 

var Translatedtext = translateSentence("Welcome", "en", "fr"); 
console.log(Translatedtext); 

업데이트 :에 번역 된 데이터를 반환하기 위해 노력하고있어

여기에 JSON 내가 할 노력하고있어 경우 : 아웃 { Translatedtext: {} }으로 표시

data = new Object(); 
    data.Translatedtext = Translatedtext; 

    var string = JSON.stringify(data); 
    console.log(JSON.parse(string)); 

을 나는 { Translatedtext: {Bienvenue} }

같은 것을 예상
+0

번역 할 때 무엇을하고 있는지 확인해야합니다. 그것은 약속을 돌려 주어야합니다. –

+0

@GetOffMyLawn : 아니요, 아닙니다. 'async' 함수 **는 항상 ** 약속을 반환합니다. –

+0

'translate '가 결코 해결되지 않았기 때문에 약속이 보류되었을 수 있습니다. 그래서 그것을 보는 것이 도움이 될 것입니다. –

답변

0

이 약속을 반환 translate 가정 :

이 당신이 /가 결과에 액세스 할 수있는 전에 거부 약속의 해결을 위해 기다릴 필요가 의미 그 다음 객체에 텍스트를 추가하십시오.

은 다음과 같이 할 것입니다 :

async function performOperations(){ 
    let Translatedtext = await translateSentence("Welcome", "en", "fr") 
    data = new Object(); 
    data.Translatedtext = Translatedtext; 

    var string = JSON.stringify(data); 
    console.log(JSON.parse(string)); 
} 

performOperations() 

당신이이 구글 API에 요청 처리를 완료하기 전에 개체를 검사하고있다. 따라서 귀하의 데이터는 그 위치로 갈 가능성이 높습니다. 즉, 너무 빨리 대상을 바라 보는 것입니다.

0

async 함수는 약속을 되 돌리므로 Translatedtext은 약속에 대한 참조이며, 덤프 할 때 보류중인 사실을 포함하여 약속의 세부 정보를 볼 수 있습니다.

당신이 결과를 얻을 의미하는 경우, 당신은 await을에 (또는 then를 사용) 것 :

var Translatedtext = await translateSentence("Welcome", "en", "fr"); 
// ------------------^ 
console.log(Translatedtext); 

, 또는

translateSentence("Welcome", "en", "fr") 
    .then(Translatedtext => { 
     console.log(Translatedtext); 
    }) 
    .catch(err => { 
     // Handle the fact an error occurred 
    }); 
합니다 (이 거부 할 경우 예외를 처리)

await을 사용하려면 async 함수에 있어야합니다.

+0

'Translatedtext'를 Json에 저장할 수 있습니까? – sami

+0

@sami : .... 물론 ....? 왜 네가 할 수 없을거야? –

1

코드가 async/await으로 작성된 경우 해당 코드가 async 함수가 아닌 값을 얻을 수 있다는 의미는 아닙니다. 귀하의 기능은 단지 약속을 반환합니다. 어쨌든 당신은 따라서이 Promise 반환

translateSentence("Welcome", "en", "fr").then(text => console.log(text)); 

처럼 쓰거나

async anotherFunction() { 
    const text = await translateSentence("Welcome", "en", "fr"); 
    console.log(text); 
} 
0

translateSentenceasync으로 정의 된 다른 async 함수에서이 함수를 호출 할 필요가있다. 우리는 비동기 기능을하고 translateSentence 할 때까지 기다릴 수

translateSentence("Welcome", "en", "fr") 
    .then(Translatedtext => { 
    var data = { Translatedtext }; 
    var string = JSON.stringify(data); 
    console.log(JSON.parse(string)); 
    }) 
    .catch(err => console.log(err);