我是whiting firefox擴展。 我得到的功能是閱讀文件的內容:JavaScript如何獲取Promise onSuccess中承諾的變量值Promise
var HelloWorld = {...
getData: function() {
var env = Components.classes["@mozilla.org/processenvironment;1"].getService(Components.interfaces.nsIEnvironment);
var path = env.get("TEMP");
path = path + "\\lastcall.txt"
alert(path);
Components.utils.import("resource://gre/modules/osfile.jsm");
let decoder = new TextDecoder();
let promise = OS.File.read(path);
var line = null;
promise = promise.then(
function onSuccess(array) {
line = decoder.decode(array)
alert(line);
return line;
}
);
alert("ducky:"+line+"duck");
},
...};
我只是line
將是相同的,因爲外面的功能聲明。從內在警報我得到了適當的價值,但從外部我得到duckynullduck
。如何解決它
'OS.File.read'做一些事情異步。只有在promise被解析並且你傳遞給'then'的函數被執行之前'line'纔會有值。將依賴'line'的代碼移到回調中。 –