自动包含所需的API合同调用

时间:2017-04-02 23:30:55

标签: javascript node.js asynchronous suman

我有这段代码:

  function runAsync(fn: Function) {
    ret.count++;
    fn(function (err: Error) {
      err && console.error(err.stack || err);
      ret.count--;
      if (ret.count < 1) {
        ret.cb();
      }
    });
  }

  s.on(events.FATAL_TEST_ERROR, function (val: any) {

    runAsync(function (cb: Function) {

      db.serialize(function () {
        db.run('CREATE TABLE lorem (info TEXT)');

        let stmt = db.prepare('INSERT INTO lorem VALUES (?)');
        for (let i = 0; i < 10; i++) {
          stmt.run('Ipsum ' + i);
        }
        stmt.finalize();

        db.all('SELECT rowid AS id, info FROM lorem', function (err: Error, rows: Array<any>) {

          cb()
        });
      });

    });
  });

发生的事情是,如果用户想要包含异步调用,他们需要调用runAsync函数,然后将他们的代码放在传递给runAsync的函数体中。

我有什么方法可以让它更自动化,以便用户不必担心完全符合API?

我主要担心的是runAsync函数必须在调用事件处理程序的同一时刻调用。另一个问题是API用户忘记触发回调是很常见的。

1 个答案:

答案 0 :(得分:2)