gpt4 book ai didi

javascript - JS 函数没有正确返回值

转载 作者:行者123 更新时间:2023-12-03 07:11:22 25 4
gpt4 key购买 nike

我正在使用 qz print Api 来打印标签。它有自己的功能(JS),可以在警报中显示默认打印机。我想在 div 中显示打印机名称。到现在为止我已经取得了成就。我的代码如下。

function useDefaultPrinter() {
var printer;
if (isLoaded()) {
// Searches for default printer
qz.findPrinter();
window['qzDoneFinding'] = function() {
// Alert the printer name to user
printer = qz.getPrinter();

window['qzDoneFinding'] = null;
defaultFound = true;
};
}
alert(printer);
return(printer);
}

用于显示 HTML

var printer_name = useDefaultPrinter();
lbDownHtml += "<div><span>Default printer found: '" + printer_name + "'</span>";
lbDownHtml += "</div>";

问题是,如果我在返回之前不在 useDefaultPrinter() 中使用警报(打印机),它会显示未定义,但是如果警报像上面的代码一样存在,它会在警报中显示未定义,但在我打印它的 html 中显示完美输出。有什么问题吗?因为我不想提醒(但如果我不使用它,它会显示未定义)。

最佳答案

我对这个 API 知之甚少,但这实际上是一个常见问题。

qz.findPrinter() 函数似乎是异步 - 当您的 useDefaultPrinter 函数完成时,它仍会主动运行。

对于异步函数,您不能简单地返回所需的值,因为它还不存在。最常见的解决方案是向函数添加“回调”参数(回调本身就是一个“函数变量”)。然后,当您需要的对象可用时调用该回调函数。在您的代码中,这将位于此处:

// Alert the printer name to user
printer = qz.getPrinter();

一旦到位,您将需要重写外部需要的任何代码useDefaultPrinter

之前:

printer = useDefaultPrinter();
// continue operation here...

之后:

useDefaultPrinter(function(printer) {
//...continue operation here...
});

如果您仍然感到困惑,请在 Google 中搜索“JavaScript 异步编程教程”。根据您的用户名,英语似乎不是您的母语,因此如果您能找到适合您的学习风格的描述,那么可能会更容易理解 - 对于大多数开发者来说,一开始它往往没有意义。

关于javascript - JS 函数没有正确返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36605897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com