【发布时间】:2014-08-16 03:26:02
【问题描述】:
最近我一直在编写一个程序来修改一个 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)
})
【问题讨论】:
标签: javascript android node.js node-webkit