co icon indicating copy to clipboard operation
co copied to clipboard

The co's then-function called before than thunkify function

Open lhlPersonal opened this issue 9 years ago • 2 comments

let co = require('co'); let Thunk = require('thunkify');

function testThunk(arg1, arg2, callback) { console.log(arg1, arg2); setTimeout(()=> { callback('', 'thunk test'); }, 200); }

co(function *() { return Thunk(testThunk)('arg1', 'arg2')((err, data)=> { //return a thunkify function. console.log('thunk call result:', data); }); }).then(result=> {//The then-function called before than thunkify function,is that right? console.log('co result:', result); } );

lhlPersonal avatar Nov 20 '16 09:11 lhlPersonal

There's something wrong with your source.

  • You should use yield in front of thunk.
  • testThunk's callback is called by co (systematically)
  • You should return thunk's result to use this in co's then.

Modified source below.

let co = require('co');
let Thunk = require('thunkify');

function testThunk(arg1, arg2, callback) {
  console.log(arg1, arg2);
  setTimeout(()=> {
    callback(null, 'thunk test');
  }, 200);
}

co(function *() {
  var result = yield Thunk(testThunk)('arg1', 'arg2');
  console.log(`testThunk's result : ${result}`);
  return result;
}).then(result => {//The then-function called before than thunkify function,is that right?
  console.log('co result:', result);
});

ifsnow avatar Nov 22 '16 01:11 ifsnow

OK,I see.Thank you.

lhlPersonal avatar Nov 22 '16 01:11 lhlPersonal