【问题标题】:Javascript - How do I return a generic function inside another function?Javascript - 如何在另一个函数中返回一个通用函数?
【发布时间】:2021-07-03 13:54:01
【问题描述】:

我想通过第二个函数在控制台打印第一个函数的输出变量的值

实际上可以看出,在主函数中还有另外两个通用函数;这一切都让我的想法变得混乱

function carica() {
    document.getElementById('carica')
        .addEventListener('change', function () {
            var fr = new FileReader();
            fr.onload = function () {
                var output = document.getElementById('output').textContent = fr.result;
                return output;
            }

            fr.readAsText(this.files[0]);
            return fr.output;
        })
    gestioneElenco(output);
}

function gestioneElenco(output) {
    console.log("1 " + output);
}

【问题讨论】:

  • gestioneElenco(output)移动到fr.onload的末尾,并删除return
  • 你不能从事件监听器返回任何东西。回调函数从事件队列中调用,代码中不会有返回值的接收者。

标签: javascript function file object return


【解决方案1】:

这应该可行:

function carica() {
    document.getElementById('carica').addEventListener('change', function () {
        var fr = new FileReader();
        fr.onload = function () {
            var output = document.getElementById('output').textContent = fr.result;
            gestioneElenco(output);
        }
        fr.readAsText(this.files[0]);
        return fr.output;
    })
}
function gestioneElenco(output) {
    console.log("1 " + output);
}

您要返回哪个通用函数?

【讨论】:

    【解决方案2】:

    你在上述结构中犯的错误:

    返回fr.输出;

    1. FileReader 对象中没有名为 output 的属性。实际上,它有result 属性,只有在FileReader 完全加载后才有效。

    2. 从事件监听器返回任何东西都会让它无处可去

    只需在onLoad函数内调用gestioneElenco(output);。这将在读取文件内容后立即调用您的第二个函数。

    【讨论】:

      猜你喜欢
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      相关资源
      最近更新 更多