最近我一直在编写一个程序来修改一个Android设备并运行node-webkit。我现在有一个漂亮的GUI,想要实现adbkit,这样工具就可以独立于平台了。
我已将adbkit和bluebird模块安装到node-modules /并且据我所知,一切都应该正常工作(我对回调和承诺的想法非常新)
问题在于,即使没有连接设备,我也会获得成功返回“完成推送......”而不是“出错”。香港专业教育学院尝试过测试client.listDevices并得到同样的问题:无论设备是否实际连接,都会返回正值。
如果有人有节点ADBKIT或JS Promises的经验,我将非常感谢一些指导。
这是我的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)
})
答案 0 :(得分:0)
要触发catch
,您需要throw
。因此,如果您希望在任何设备上都出错,则应添加if (devices.length <= 0) throw new Error('error description')