問題タブ [co]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
437 参照

javascript - 名前付き関数で co を使用するには?

だから私はco約束を返すMongoDBメソッドをラップ するために使用しようとしていますhttp://mongodb.github.io/node-mongodb-native/2.0/reference/ecmascript6/crud/

私はco次のように使用されているのを見ます:

これは無名関数のようです。コードの本体は問題ありませんが、内部で生成された値を取得する方法はありますか? たとえば、基本的にcoルーチンの結果を取得するには:

私ができるなら:

その後、別の場所で

しかし、私は得る

また試してみました:

...

しかし、まだ運がありません。

0 投票する
1 に答える
437 参照

javascript - 同期コードから co と promise を使用する (mongoDB の例)

co() でラップされた関数を使用して、通常の同期コードと統合するにはどうすればよいですか?

たとえば、co.wrapyield を使用して mongo で非同期メソッドを呼び出すこの関数を ped にしました。

これで呼び出されています:

以下のようなログが得られます。

TopicsResponse collName +3s Topics TopicsResponse topic +2ms Promise { <pending> } TopicsResponse res +1ms { _id: 56d6bdd93cf89d4082e1bd27, cname: 'nodejs', username: 'bob' } TopicsResponse topic.then +1ms Promise { undefined }

したがって、co.wrappedメソッド内では、 res に実際のデータがあります{ cname: nodejs }。など。ただし、返される/返されるものは未定義です。

これは、promise を生成するジェネレーター関数と関係があると思います。

私も試してみました

返す

この方法で co を使用して、非同期コードを同期コードのように見せたり実行したりすることは可能ですか? 私が見た他の例では、 co() 内のすべてを最上位に配置しました。たとえば、http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#find

更新、これは約束を使用して機能します:

しかし、すべての醜い約束のラッピング コードをライブラリにプッシュしたいので.then()、アプリ全体に振りかける必要はありません...

0 投票する
3 に答える
44 参照

javascript - NodeJSジェネレーターは特定の行に到達しませんか?

coデータのスクレイピングとクレンジングを行うジェネレータ関数を実行するために使用しています。ただし、ループ後にコードの特定の部分に到達することはありません。私のコードは次のようになります。

関数の終わりに向かってコンソールステートメントに到達することはありません

0 投票する
1 に答える
114 参照

javascript - Javascript - プロミスの代わりにジェネレーターを使用する

次の機能があるとします。

私はそれらを実行できます:

そして、約3秒かかります。

ここで、ジェネレーターを使用してこれらの関数を実行したいと思います。

f2 を呼び出すには f1 の解決済みの値が必要なので、f1 が完了するまで待ちます。これには 5 秒かかります。同じ 3 秒を取得するにはどうすればよいですか?ただし、ジェネレーターを使用していますか?

0 投票する
1 に答える
3848 参照

javascript - _.find はオブジェクトへの参照を返しますか? 結果のプロパティを適切に設定するには?

lodashfindを使用して配列からオブジェクトをクエリし、そのオブジェクトのプロパティを設定しますが、このプロパティを設定した後に配列を出力すると、変更されません。

JavaScript で lodash を使用してオブジェクトを処理する経験が豊富な人からのコメントに感謝します。また、私が問題を作成する方法についてコメントしたり、検索エンジンを介して他の人がより簡単に検索できるようにコンテンツを編集したりすることもお気軽にどうぞ.

分離されたコード:

結果、これは からの出力ですconsole.log:

予想される結果、最後の印刷を見てください。このオブジェクトを、オブジェクトの元のデータ構造で変更したい:

Public Gist、ここにもコメントしてください。この質問が他の人にも役立つことを願っています。

Edit Lodash referenceReturns the matched element, else undefined.は、それがクローンされたオブジェクトまたはクエリされたオブジェクトへの参照を返すことを意味するかどうかわからないと言っています。

0 投票する
1 に答える
135 参照

arrays - koajs マルチパート フォームの投稿、返信を送信する前に zip を抽出する

インターフェイスに koajs を使用しています ファイルとして 1 ~ x 個の zip が添付されたフォームがあります

これらのファイルをループして、koa が応答を送信する前に抽出するにはどうすればよいでしょうか :/ ?

これが私が試したことです(よく理解していないので、非常に悪い可能性があります:p)

}

私が持っている瞬間の結果として

ご覧のとおり、ループが終了する前に -> POST /courses/add 200 2,229ms 22.57kb があります

アイデア?

ありがとう

0 投票する
1 に答える
269 参照

javascript - 約束から拒否をキャッチ

私はチョイスでfunc() reject直接ではなく、からのエラーを保持したい、onError()

私が使用する ように指示したい場合は、常に許可し、func() resolve後で返す結果を決定する前にyield func()
onError()throw ..;

直行するかしないかのfunc() reject後で決めることができるより良いアイデアを考えているyield func()onError()

0 投票する
1 に答える
259 参照

node.js - ミドルウェアの外部で co-sqlite3 db オブジェクトを作成する適切な方法

koa アプリケーション内にデータベース アクセス レイヤーを実装しようとしています。これはうまくいきます:

しかし、アプリ内のすべてのミドルウェアにデータベースを公開したくありません。これを防ぐために、次のように定義されて.setup()いるミドルウェアの外で実行してみました。services.setup();

modelsオブジェクトには、ブログ投稿とユーザー テーブルを作成するために実行するスクリプトが含まれているだけです。

問題を引き起こしている行はvar database = yield sqlite3(this.file); 、次のエラーが表示されることです。

yield転送するものが何もないので、これは正しいと思います。しかしsetup()、ジェネレーター関数を作成しても実行されません。同様に、yieldステートメントを削除すると、 database.run is not a function.

私はこれにこだわっています。適切に実装する方法がわかりません。

編集:

.setup()ジェネレーター関数を作成してすべての呼び出しdatabaseyield行うと、テーブルが作成され、期待どおりにすべてが実行されます...

しかし、データベースを他のすべてのミドルウェアに公開したくないので、同じ元の問題に戻ります。

co-sqlite3データベースをミドルウェアに含めずにセットアップするにはどうすればよいですか?