gpt4 book ai didi

node.js - 如何从node-memcached get函数返回结果?

转载 作者:太空宇宙 更新时间:2023-11-04 02:42:48 26 4
gpt4 key购买 nike

node memcached 有一个函数 get 来检索 memcachd 键值,例如:

memcached.get( "hello",function( err, result ){
if( err ) console.error( err );
this.r = result;
console.dir( result );
memcached.end();});

函数中的第二个参数是回调函数
在回调函数中,我可以轻松记录我的 key 的值。
我尝试将属性 r 分配给 memcached,当我尝试在 get 函数外部记录 memcached.r 时,会出现 undefined 结果。
我的代码有什么问题吗?

最佳答案

虽然 this 看起来像一个变量并且通常表现得像一个变量,但它并不是真正的变量,因此它的表现不像闭包中的变量。当一个函数嵌套在另一个函数中时,内部函数会获得一个全新版本的 this,它不太可能与外部函数的 this 指向相同的东西。

因此,如果你需要在内部函数中引用外部函数的 this,你必须首先将其复制到一个真正的变量中(大多数人喜欢称之为 self 但有些人更喜欢 that),然后在内部函数中引用该变量。

但是,在您的情况下,您已经有了一个可以分配给的实际变量,即 memcached,因此只需在回调中将 this 替换为 memcached 即可。它是回调创建的闭包的一个适当范围的外部变量(从您可以在其中使用 memcached.end() 的事实可以看出)。

[更新以包含评论中提到的代码的正确格式版本]

memcached.get = function get(key, callback) {
if (Array.isArray(key)) return this.getMulti.apply(this, arguments);
this.command(function getCommand (noreply) {
return { key: key , callback: callback ,
validate: [['key', String], ['callback', Function]] ,
type: 'get' , command: 'get ' + key };
});
};

看起来您正在尝试异步调用多个函数并期望从它们返回一个值。那根本行不通。

关于node.js - 如何从node-memcached get函数返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12191711/

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