JavaScript如何在Promise onSuccess外部Promise中获得分配的变量的值

我在用Firefox扩展.
我有读取文件内容的功能:

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");
    },
...};

我除了那一行是一样的,因为它是在函数外部声明的.从内在的警报中,我得到了适当的价值,但从外在的警报中,我得到了鸭嘴鸭.如何解决

最佳答案

how to fix it

不要使用外部警报.

那是how asynchronous code works,您只能访问稍后执行的回调中的数据.但是,使用promise链接,不需要将所有内容都放在同一个回调或嵌套的回调中.

let decoder = new TextDecoder(); 
let promise = OS.File.read(path); 
return promise.then(function onSuccess(array) {
    var line = decoder.decode(array);
    alert(line);
    return line;       
}).then(function onSuccess2(line) {
    alert("ducky:"+line+"duck");
    return line;
}); // return the promise for the line!

转载注明原文:JavaScript如何在Promise onSuccess外部Promise中获得分配的变量的值 - 代码日志