Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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_Ionic Framework_Promise_Ionic2 - Fatal编程技术网

Javascript 回信

Javascript 回信,javascript,ionic-framework,promise,ionic2,Javascript,Ionic Framework,Promise,Ionic2,我试图调用一个REST调用并返回一个承诺,这样我就可以在调用后操作数据 var self = this; var returnPromise; returnPromise = self.httpService.testService(); returnPromise.then(function(result){ console.log(result); }); 我的REST服务位于另一个文件中,该文件具有以下内容: testService() { console.log("star

我试图调用一个REST调用并返回一个承诺,这样我就可以在调用后操作数据

var self = this;
var returnPromise;
returnPromise = self.httpService.testService();
returnPromise.then(function(result){
 console.log(result);
});
我的REST服务位于另一个文件中,该文件具有以下内容:

 testService() {
    console.log("start of testService");

    var request = require('request');
    var user = "test";
    var ipadd = "127.0.0.1";

    request({

        url: 'https://' + 'LocalHost' + '/URLOFWEBSERVICE',
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        form: {
            userID: user,
            userIpAddress: ipadd
        }
    }, function(error, response, body) {
        if (error) {
            console.log(error);
        } else {
            console.log(response.statusCode, body);
            var newPro = new Promise(function(fulfill, reject) {
                fulfill(body);
            });

            console.log(newPro);
            return newPro;

        }
    });
}
我能够打印出response.stateCode、body REST结果,并打印出被调用的控制台

问题在于

那么,我答应你

在第一页中,其中。然后返回未定义

起初,我认为可能是在其他人回复我之前,承诺已经被调用了。所以,我想做一个超时函数来测试

setTimeout(
function(){
  console.log(returnPromise);
}
, 5000);

但即便如此,returnPromise仍返回未定义的值。

如果希望函数返回承诺,它应该返回承诺

您的testService不会返回任何内容

这是:

testService() {
    console.log("start of testService");
    var request = require('request');
    var user = "test";
    var ipadd = "127.0.0.1";
    return new Promise(function(fulfill, reject) {
        request({
            url: 'https://' + 'LocalHost' + '/URLOFWEBSERVICE',
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            },
            form: {
                userID: user,
                userIpAddress: ipadd
            }
        }, function(error, response, body) {
            if (error) {
                // reject the promise, handle with .catch
                reject(error);
            } else {
                console.log(response.statusCode, body);
                fulfill(body);
            }
        });
    });
}
这可以称为

// var self = this; // why? not needed in the code shown
// var returnPromise; // why? it's not needed in the code shown

this.httpService.testService()
.then(function(result) {
    console.log(result);
})
.catch(function(err) {
    // handle your errors here
});

如果您希望函数返回一个承诺,那么它应该返回一个承诺

您的testService不会返回任何内容

这是:

testService() {
    console.log("start of testService");
    var request = require('request');
    var user = "test";
    var ipadd = "127.0.0.1";
    return new Promise(function(fulfill, reject) {
        request({
            url: 'https://' + 'LocalHost' + '/URLOFWEBSERVICE',
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            },
            form: {
                userID: user,
                userIpAddress: ipadd
            }
        }, function(error, response, body) {
            if (error) {
                // reject the promise, handle with .catch
                reject(error);
            } else {
                console.log(response.statusCode, body);
                fulfill(body);
            }
        });
    });
}
这可以称为

// var self = this; // why? not needed in the code shown
// var returnPromise; // why? it's not needed in the code shown

this.httpService.testService()
.then(function(result) {
    console.log(result);
})
.catch(function(err) {
    // handle your errors here
});

您至少需要发布testService的源代码;返回?承诺。。。是.then未定义或是result in.then callback未定义?我的REST服务位于另一个文件中,该文件具有以下内容:javascript是否位于被调用函数中的另一个文件中?无论如何,testService不会返回任何内容-甚至可能不返回PromiseT271314-这是正常的操作,尽管从显示的代码来看,没有迹象表明在这种情况下会发生什么。您至少需要发布testService的源代码;返回?承诺。。。是.then未定义或是result in.then callback未定义?我的REST服务位于另一个文件中,该文件具有以下内容:javascript是否位于被调用函数中的另一个文件中?无论如何,testService不会返回任何内容-甚至可能不返回PromiseT271314-这是正常的操作,尽管从显示的代码来看,没有迹象表明在这种情况下会发生什么啊,我不知道我的承诺实际上没有兑现。谢谢你的意思是你的函数没有返回一个:我不知道我的承诺实际上没有返回一个。谢谢你的意思是你的函数没有返回1:p