gpt4 book ai didi

javascript - 如何从回调中返回值

转载 作者:行者123 更新时间:2023-11-30 13:04:44 24 4
gpt4 key购买 nike

我正在使用 node.js 执行 DNS 查找以返回 IP 地址 ( http://nodejs.org/api/dns.html )。在这个例子中,我可以让我的结果正确记录,尽管我更愿意能够访问回调范围之外的变量。这怎么可能?

我当前的代码:

var domain = 'google.co.uk';

dns.lookup(domain, function (err, aRecord) {
if (err) throw err;
console.log(aRecord);
});

理想情况下,我希望能够执行以下操作:

var domain = 'google.co.uk';

var myfunction = dns.lookup(domain, function (err, aRecord) {
if (err) throw err;
return aRecord;
});

var result = myfuction(domain);

最佳答案

实际上,这是不可能的,因为它是异步的。您可以将所有代码放在回调中,但这可能不是最好的。

开发人员处理异步操作返回数据的一种方法是使用 Promises。我读过的关于 promise 概念的最好的文章是这篇:http://blog.jcoglan.com/2013/03/30/callbacks-are-imperative-promises-are-functional-nodes-biggest-missed-opportunity/读一读!

在node中,一个众所周知的promise库是Q: https://github.com/kriskowal/q

如果您想了解 Javascript 中的异步行为/管理的更多概念性方法,Trevor Burnham 有一本非常好的书,名为“Async Javascript”http://pragprog.com/book/tbajs/async-javascript

关于javascript - 如何从回调中返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16107221/

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