从模块的原型方法返回一个值,可以是同步的也可以是异步的
Returning a value from a prototype method of a module, synchronous or asynchronous?
我一直在编写一个模块来保存对象数组,并且应该在提供特定值时返回其中一个。这是通过一个原型方法完成的,该方法可以从需要它的其他模块中调用。
我遇到的问题是,虽然这看起来像一个同步方法调用,但返回的对象始终不是我期望的对象…
获取我想要做的:
var ModuleOne = function(){
this.values = [];
}
ModuleOne.prototype.method = function(value){
this.values.forEach(function(tempVal){
if(tempVal.member === value){
return tempVal;
}
});
return false;
}
module.exports = Module;
当我从另一个模块调用这个方法时,它总是返回false
,即使它找到了所需的对象。
所以我的问题是:来自另一个模块的原型方法在NodeJS
中同步吗?
好的,在写这个问题的时候,我想到了我的错误所在:
基本上,要回答原型方法是否同步的问题->是的,它是同步的。
问题是,在这个方法中,我试图从一个匿名函数(Array.forEach(function(){})
) return
,这当然不做任何事情,因为你不能停止forEach(),即使你可以,只会返回到正在进行的原型方法(在这种情况下,去下一行,每次简单的return false
)。
因此,为了使其工作,我只需要做以下操作:
ModuleOne.prototype.method = function(value){
var found = false;
this.values.forEach(function(tempVal){
if(tempVal.member === value){
found = tempVal;
}
});
return found;
}
所以现在它应该正确地返回所需的对象(如果没有找到则返回false)。
希望这是澄清一切
相关文章:
- 异步获取数据使用JavaScript同步获取数据
- javascript函数中的异步与同步.(Node.js)
- strongloop script.js run find in before delete方法:如何同步运行异步方法
- 如何模拟同步ajax调用?(基于异步的同步)
- 为什么同步睡眠功能没有被承诺内异步化
- 如何在异步函数与Deferredjquery之间同步
- 使用模态库从嵌套的异步调用中生成javascript同步代码
- 将数据发布到iframe是同步还是异步
- 节点.js / 续集.js / 快递.js - 如何插入多对多关联?(同步/异步?
- NodeJS中的异步与同步
- javascript如何成为一种同步语言并在浏览器和node.js环境中异步运行
- 如何同步2个异步瀑布
- 异步函数调用是否可以在两个同步语句之间完成
- 同步异步创建的承诺
- 同步/异步AJAX函数的模式
- 如何在 javascript 中同步异步方法
- 设置同步/异步函数序列的正确方法,所有这些函数都可以停止表单提交和进一步处理
- 浏览器呈现和javascript执行的同步/异步特性
- javascript中异步回调的结构:同步异步
- jQuery按顺序同步异步请求