节点上的javascript追加多个被调用函数
在angular中,有一个选项可以调用$http服务并追加成功和错误的回调:节点上的javascript追加多个被调用函数,javascript,angularjs,node.js,Javascript,Angularjs,Node.js,在angular中,有一个选项可以调用$http服务并追加成功和错误的回调: $http.get(url).success (function() { do A}).error (function () { do B}); 我想在节点上用javascript实现它,所以我创建了新文件并编写了以下代码 file1.js: module.exports = { get: function (url) { //should be sync implementation
$http.get(url).success (function() { do A}).error (function () { do B});
我想在节点上用javascript实现它,所以我创建了新文件并编写了以下代码
file1.js:
module.exports =
{
get: function (url) {
//should be sync implementation
console.log("get function");
},
error: function (url) {
console.log("error function");
},
success: function (url) {
console.log("success function");
}
}
从文件2中:
var global = require('./file1');
file1.get("some string")
.success( function () { console.log("success") })
.error( function () { console.log("success") })
然后我使用jasmine\u nodejs
插件从grunt运行它。
但这是行不通的。如何使用可以附加的函数定义模块?该函数必须返回一个包含其他函数的对象,然后可以链接该对象。例如,如果
get
函数返回{foo:function(){…}}
,则可以按如下方式链接它get().foo()
Angular用于http请求,因为它们是异步操作。
$http
服务正在执行异步操作,语法基于一个称为的概念
让我们看看您的示例,并将其转换为基于承诺的模块
module.exports = {
get: function(url) {
return new Promise(function(resolve, reject) {
// Perform your operation here.
// ...
// After your operation, depending on the status of your object,
// you want to call either resolve or reject.
setTimeout(function() {
resolve("Success!");
// or you can call reject("Fail!");
}, 250);
})
}
}
现在,您应该能够做到这一点:
var file1 = require('./file1');
file.get("some string")
.then( function () { console.log("success") })
.catch( function () { console.log("error!") })
请记住,当您调用
resolve(…)
函数时,它将触发。然后使用参数触发方法。反之亦然,当您调用拒绝(…)
时,它将在.catch
函数上触发。让每个函数返回以下内容:
module.exports = {
get: function (url) {
//should be sync implementation
console.log("get function");
return this;
},
error: function (url) {
console.log("error function");
return this;
},
success: function (url) {
console.log("success function");
return this;
}
}
这将允许您进行链接。但我强烈建议您使用一个框架来实现这一点。我认为这不可行,此模块范围内的此
取决于调用方的有界函数。我想要实现的场景相当于angular http服务。我的意思是,我想自己定义2个或更多函数,并传递一个回调来处理第一个get函数(例如,从http服务器获取信息或其他内容)得到的结果,并且可以将其他函数附加到此函数,例如:get.func1(回调).func2(回调)。功能1/2/3。。。可以是任何我可以根据第一个函数的结果自行决定的场景。谢谢