Cordova插件异步挂钩无法正常工作

时间:2017-11-14 14:44:45

标签: javascript cordova asynchronous

我在this documentation之后编写了一个Cordova插件。我可以毫无问题地安装插件,但是,当我在钩子中调用一些异步代码时,该代码将永远不会运行(或者至少这是我的怀疑)。我测试了以下代码:

在我的<hook type="after_run" src="lib/after-run.js" /> 我定义了以下钩子:

after-run.js

我的module.exports = function () { console.log('After run!') function timeout() { console.log('Timeout!') setTimeout(function () { console.log('Hello World!') timeout() }, 1000) } timeout() } 看起来像这样:

cordova run

运行$ cordova run ... (platform building etc) ... After run! Timeout! io.cordova.hellocordova: 68915 logPath: /Users/niklas/temp/temp/sampleApp/platforms/ios/cordova/console.log 时,我得到以下输出:

$ cordova run

... (platform building etc) ...

After Run!
Timeout!
Hello World!
Timeout!
Hello World!
Timeout!
Hello World!

...
然而,

期待得到这样的东西:

after-run.js

所以我的问题是:这是为什么?我如何获得通缉行为?即如何指定钩子何时完成,而不仅仅是“切断”。

备注:

  1. 我正在使用iOS平台使用干净的Cordova项目对此进行测试 而没有其他插件。
  2. 控制台输出中指定的位置没有可用的日志。
  3. 使用节点测试$http时,我会得到预期的输出。
  4. 我也尝试过指定here的'promise'方法,与我上面的测试结果相似。

0 个答案:

没有答案