suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Gibt node.js über module.exprots Versprechensobjekte anstelle von Daten zurück?

data.js

var http=require('http');
function runAsync(){
    var p = new Promise(function(resolve, reject){
        //做一些异步操作
         var json = '';
         http.get('http://localhost:8080/getJson?', function (res) {
        res.on('data', function (data) {
        json += data;
        }).on('end',function (){
            json = JSON.parse(json);
            resolve(json);
             })
        }).on('error', function (e) {
    console.error(e);
    });
       
    });  
        return p;
}
**module.exports=runAsync().then(function(data){
    console.log(data);
    return data;
});**//注意这句,我明明返回的是runasync.then(。。。。)为什么他给我返回了runasync()

index.js

var express = require('express');
var router = express.Router();
var getdata=require('../serve/data.js');
/* GET home page. */
router.get('/', function(req, res, next) {
    //var a=JSON.parse(getdata);
    console.log(getdata);
    res.render('index',{title:getdata.total});
});

module.exports = router;

Ergebnis:

習慣沉默習慣沉默2843 Tage vor498

Antworte allen(2)Ich werde antworten

  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:25:03

    Promise.prototype.then()

    无论什么时候返回的都是另外一个Promise对象,then()方法接受的参数是回调函数,你只能控制回调函数的返回值,不能控制then()方法的返回值。手机打字不方便,有疑问的话,等我用电脑回答。

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:25:03

    var express = require('express');
    var router = express.Router();
    var data=require('../serve/data.js');
    /* GET home page. */
    router.get('/', function(req, res, next) {
        //var a=JSON.parse(getdata);
        data.then(function(data){
            console.log(data.total);
            res.render('index',{title:data.total});
        });
        
    
    });
    
    module.exports = router;

    这样写就行

    Antwort
    0
  • StornierenAntwort