![](/img/trans.png)
[英]How can I write to firestore within a firestore triggered function?
[英]How can I find which peripheral a write callback was triggered by?
我正在制作一個Chrome應用程序,其中涉及連接到多個BLE外設並同時向它們發送寫消息。 我需要知道每個寫操作何時在哪個外圍設備上完成,以便可以對該外圍設備啟動更多操作,但是似乎沒有辦法從回調函數中引用外圍設備。 回調函數作為參數傳遞給藍牙API寫入函數:
chrome.bluetoothLowEnergy.writeCharacteristicValue(string characteristicId, ArrayBuffer value, function callback)
API顯示READ回調函數具有一個特征參數:
function(Characteristic result) {...};
然后,我一直在使用result.service.deviceAddress
查找回調所針對的設備。 但是WRITE回調沒有參數。
這使我無法引用已寫入的外圍設備,因此我無法弄清楚是哪個外圍設備導致此寫回調運行。 我可以看到您可以通過為固定數量的設備中的每一個設備配備唯一的回調函數來做到這一點,但是有人可以詳細說明如何使用單個回調函數更動態地做到這一點嗎?
我最終為回調添加了一個共享函數( d
是一個Device
實例):
var writeCallback = function (d) {
//...
}
然后,在跟蹤設備的對象中,我使用this
命令為該函數添加了一個屬性:
class Device {
constructor(device) {
//...
this.writeCallbackLink = (function () {
writeCallback(this);
}).bind(this);
}
}
該bind(this)
是至關重要的,以確保this
指的是實際的對象,而不是運行時環境。 然后,當我調用API函數時,我使用了回調鏈接:
chrome.bluetoothLowEnergy.writeCharacteristicValue(d.write.instanceId,
data_buffer, d.writeCallbackLink);
這將導致writeCallback
與觸發它的d
作為參數一起運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.