Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
节点上的javascript追加多个被调用函数_Javascript_Angularjs_Node.js - Fatal编程技术网

节点上的javascript追加多个被调用函数

节点上的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

在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
        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。。。可以是任何我可以根据第一个函数的结果自行决定的场景。谢谢