特定于Node-webkit的javascript回调/承诺问题
Node-webkit specific javascript callback/promise issues
最近我一直在写一个修改android设备的程序,并在node-webkit上运行。我现在有一个漂亮的GUI,并想实现adbkit,使工具将是平台独立的。
我已经安装了adbkit和bluebird模块到node-modules/,据我所知,一切都应该正常工作(我对回调和承诺的想法非常陌生)
问题是,即使没有设备连接,我得到一个成功的返回'完成推…而不是"出了问题"。我试着测试客户端。listDevices并得到相同的问题:无论设备是否实际连接,返回正。
如果有人有节点ADBKIT或JS承诺的经验,我会非常感谢一些指导。
这是我的JS代码:
var Promise = require('bluebird')
var adb = require('adbkit')
var client = adb.createClient()
client.listDevices()
.then(function(devices) {
return Promise.map(devices, function(device) {
return client.push(device.id, 'test.txt', '/data/local/tmp/foo.txt')
.then(function(transfer) {
return new Promise(function(resolve, reject) {
transfer.on('progress', function(stats) {
console.log('[%s] Pushed %d bytes so far',
device.id,
stats.bytesTransferred)
})
transfer.on('end', function() {
console.log('[%s] Push complete', device.id)
resolve()
})
transfer.on('error', reject)
})
})
})
})
.then(function() {
alert('Done pushing test.txt to all connected devices')
})
.catch(function(err) {
alert('Something went wrong:', err.stack)
})
要触发catch
,你需要throw
一些东西。所以如果你想在没有设备的情况下得到错误,你应该添加if (devices.length <= 0) throw new Error('error description')
相关文章:
- 承诺在非节点式回调上使用Bluebird
- 角承诺的“then”函数的成功回调的词汇范围是什么?
- JQuery 承诺已经包含回调的函数
- JavaScript - 返回承诺和/或调用回调
- 承诺中的成功回调不会发生$http
- 如何重构“;回调金字塔”;转换为基于承诺的版本
- 承诺在Protractor中进行回调排序
- Javascript承诺动态回调
- 编写一个使用传递两个参数的回调的承诺
- Phantom.js-如何使用承诺而不是回调
- 在第一次错误回调时退出承诺链
- 如何获取 Ember 组件对象内部承诺成功或错误回调
- 创建承诺回调
- 回调/承诺无法正常工作
- 通知承诺角度删除回调
- 回调/承诺在快递.js中实现
- Node sequelize回调承诺期望一个函数,是否有一种方法可以通过函数调用删除已声明的函数
- Angular-For Loop HTTP回调/承诺
- 特定于Node-webkit的javascript回调/承诺问题
- 让javascript函数与回调/承诺实现总是返回一个承诺