私はオブジェクトジェネレータの使い方を学び、yieldコマンドを使ってnodejsコントローラでいくつかの同期操作を実行しようとしています。オブジェクトジェネレータ関数は、実行してはならない結果を返しません。
FOOコールを最初に実行し、戻ったときにBARコールを実行します。
私はHello FOO
Hello BAR
を表示するには、コンソールを期待していた。しかし、私が得るすべては私も関数内console.logsを得るいけない
Result [object Generator]
Result [object Generator]
である。この場合、
var myResult = findUser1("FOO")
console.log("Result " + myResult)
myResult = findUser1("BAR")
console.log("Result " + myResult)
function* findUser1(UID) {
var user1 = yield setTimeout("Hello " + UID, 2000);
console.log("This should be shown AFTER user1 has a result");
console.log(user1);
return user1;
}
Waou !!!私は、「非同期関数」があることを知っていませんでした - あなたの例をすぐに試してみましょう! – torbenrudgaard
私は奇妙なエラーが発生します: '非同期関数findUser(id){'と 'SyntaxError:予期しないトークン関数'は役に立ちますか? – torbenrudgaard
@torbenrudgaardどのNodeのバージョンを使用していますか?このコードの両方のバージョンは、Chromeの最新バージョンのコンソールにコピーして貼り付けると機能します。ノードの非同期機能(および非同期ジェネレータ機能)の現代バージョン – sbking