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;
Résultat :
Tout ce qui est renvoyé est un autre objet Promise. Le paramètre accepté par la méthode then() est la fonction de rappel. Vous ne pouvez contrôler que la valeur de retour de la fonction de rappel, pas la valeur de retour de la méthode then(). Il n'est pas pratique de taper sur un téléphone portable. Si vous avez des questions, attendez que je réponde sur l'ordinateur.
Écris-le comme ça