我正在使用我的Ionic 2移动应用中的Cordova WifiWizard Plugin。当我在页面的* .ts文件中运行它时,一切正常。在这种情况下,我的代码如下:
在@Component:
之前声明WifiWizarddeclare var WifiWizard:any;
调用WifiWizard和成功/错误方法:
setCurrentWifiAsHomeWifi() {
WifiWizard.getCurrentSSID(this.ssidSuccess, this.ssidError);
}
ssidSuccess = (ssid) => {
this.userService.setHomeWifi(this.user.$key, ssid);
};
ssidError = (err) => {
console.log("WiFi Wizard Error"+err);
};
但是,我不想将所有这些wifi逻辑放在页面组件中,而是将其转移到wifi提供商/服务。但是我没有得到这个服务来将ssid-string返回给组件。
编辑:
我尝试了很多不同的东西,我仔细阅读了由gyre链接的帖子(谢谢你)。但是,我仍然无法找到问题的解决方案,我认为这与链接问题略有不同。
我正在从homePage.ts调用wifi服务,例如使用承诺:
setCurrentWifiAsHomeWifi() {
this.wifiService.loadWifiData().then( result=> {
console.log("returned SSID: "+result);
});
在wifiService.ts中,我需要实现调用wifiWizard插件的“loadWifiData”,如下所示:
WifiWizard.getCurrentSSID(this.getWifiSuccess, this.getWifiError);
如果成功,它会将SSID字符串传递给“getWifiSuccess”方法,如果失败则将错误传递给“getWifiError”。但是,插件调用不会向我的主页返回任何值。
如何将结果(SSID或错误)返回到我的主页?我被困在这里感谢您的帮助!希望现在变得更加清晰。
答案 0 :(得分:0)
我通过让loadWifiData()返回Promise并直接在此Promise中定义success-和reject-函数的代码来解决它。
loadWifiData() {
return new Promise( (resolve, reject) => {
WifiWizard.getCurrentSSID(
// if successful:
(ssid => {
resolve (ssid);
})
,
// if error:
(error => {
reject (error);
})
)
});
}