NodeJS函数返回语句

时间:2016-09-04 13:29:13

标签: javascript node.js function return

我有这个功能,

if (shorturl) {
 ...
    link.shorten({longUrl:"http://google.com"}, function(err, results) {
       return results;
    });
return results;
}

现在,我希望第二个return语句接收" results"的值。相反,我得到" ReferenceError:结果未定义"。

帮我嵌套返回/回调。

参考:
我试图在函数中使用http://github.com/nkirby/node-bitlyapi来获得一个简短的

2 个答案:

答案 0 :(得分:0)

我假设您收到第二条>>> x = set([1,2,3]) >>> y = set([2,3,4]) >>> x | y set([1, 2, 3, 4]) >>> 行的错误。

这看起来像异步代码(使用回调来及时执行代码的某些部分),所以你不能只是从它返回一个值并期望它在同一个执行框架中可用。

处理你的情况的最好方法可能是在回调本身内执行其余的代码。

答案 1 :(得分:0)

你不能这样,因为link.shorten是异步的,这就是为你提供回调函数的原因。在评估第二次返回时,由于尚未返回对link.shorten函数的调用,因此结果未定义。

您应该等待回调,然后才返回结果,或者您可以使用promises并返回结果的承诺。 (节点有几个不同的promise库。)

https://howtonode.org/promises