让我们来看看这个:来自内部回调函数的返回值;呼叫必须阻止
protected getSettingByKey(key: string) : string {
let ret = null;
let api : BrowserAPI = Browser.getCurrentBrowserAPI();
let setting = api.readSetting(this.getUUID() + "." + key, "true", (value:string) => {
ret = key;
});
while (true) {
if (ret != null) return ret;
console.log("KEY IS NULL, SKIPPIN");
}
}
这是读取浏览器的设置,本地数据存储和MUST块,直到函数返回readSetting()
东西的功能。
我试过上面的方法,但它最终成为一个死循环。
我再说一遍,功能MUST,通过各种手段BLOCK,它必须不有任何回调。
如何实现?
我知道这是一种反模式,但这是它必须的方式。
您不得尝试使用阻塞函数。我再说一遍,在任何情况下,您都不能在异步功能上使用BLOCK。 – Bergi
您唯一的选择是重写'api.readSetting'以使其同步,例如将XMLHttpRequest调用更改为'async:false'。但正如其他人所说,你可能不想这样做。你为什么认为你这样做? – 2017-05-08 02:01:31