co-test.js~HEAD 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /**
  2. * Created by fy on 15-10-1.
  3. */
  4. 'use strict';
  5. var co = require('co')
  6. , thunkify = require('thunkify');
  7. var db = require('../config/db');
  8. var categoryService = require('../service/book/category');
  9. function device(p1, p2, callback) {
  10. if (p2 == 0) callback(new Error('错误'));
  11. var out = Math.round(Math.random() * 10) * 100;
  12. setTimeout(function () {
  13. callback(null, p1 / p2);
  14. }, 1 || out);
  15. }
  16. function plus(p1, p2, callback) {
  17. if (p2 == 0) callback(new Error('错误'));
  18. callback(null, p1 + p2);
  19. }
  20. [11, 22, 33].forEach(function (item) {
  21. device(item, 2, function (err, result) {
  22. //console.log(result);
  23. plus(2, result, function (err, rs) {
  24. console.log(rs);
  25. });
  26. });
  27. });
  28. console.log('测试1:------------------>');
  29. var tdevice = thunkify(device);
  30. var tplus = thunkify(plus);
  31. [11, 22, 33].map(function (item) {
  32. return co(function *() {
  33. var d = yield tdevice(item, 2);
  34. var p = yield tplus(2, d);
  35. console.log(p);
  36. return p;
  37. });
  38. }).forEach(function (x) {
  39. x.then(function (p) {
  40. console.log('--->' + p);
  41. });
  42. });
  43. co(function *() {
  44. var d = yield tdevice(3, 2);
  45. var p = yield tplus(2, d);
  46. console.log(p);
  47. return p;
  48. }).then(function (r) {
  49. console.log('--->>' + r);
  50. });
  51. console.log('测试db:------------------>');
  52. let loadByName = thunkify(categoryService.loadByName);
  53. co(function *() {
  54. var data = yield loadByName('国学');
  55. console.log(data[0][0].id);
  56. return data;
  57. }).catch(function onerror(err) {
  58. // log any uncaught errors
  59. // co will not throw any errors you do not handle!!!
  60. // HANDLE ALL YOUR ERRORS!!!
  61. console.error(err.stack);
  62. }).then(function (data) {
  63. console.log(data[0][0].id);
  64. });