Rumah > Soal Jawab > teks badan
Selepas saya mengemas kini data dalam pangkalan data, menyegarkan halaman tidak memaparkan data baharu.
Kod adalah seperti berikut
data.js
var http=require('http');
var p = new Promise(function(resolve, reject){
//做一些异步操作
var json = '';
http.get('http://localhost/getinfo', 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);
});
});
module.exports=p;
index.js
var express = require('express');
var router = express.Router();
var data=require('../serve/data.js');
router.get('/', function(req, res, next) {
data.then(function(data){
var title=new Array;
var img=new Array;
var pbi=new Array;
for(i=0;i<data.length;i++){
title[i]=data[i].pname;
console.log(title[i]);
img[i]=data[i].psrc;
pbi[i]=data[i].pbi;
}
if(req.session.un==null)req.session.un="未登录";
res.render('index',{
title:title,
un:req.session.un,
img:img,
pbi:pbi
});
});
if(req.session.un){
console.log(req.session.un);
}
});
/* GET login page. */
module.exports = router;
Penyelesaian adalah dengan menulis kandungan dalam data.js ke dalam index.js (tulis di bawah fungsi kawalan penghalaan), jadi sekarang saya mempunyai soalan, apakah mekanisme memerlukan? Tetapi ia masih tidak berfungsi jika saya meletakkan keperluan di bawah fungsi router.get, jadi saya ingin bertanya bagaimana untuk menyegarkan semula data jika saya mahu menulisnya secara berasingan.
phpcn_u15822017-05-31 10:40:55
Status janji tidak boleh diubah dan tidak boleh diulang.
Apabila data.js dimuatkan, p ditetapkan pada objek Promise dan kemudiannya dilaksanakan, kemudian menjadi keadaan Diselesaikan, dan kemudian diserahkan kepada index.js. Apabila http.get
tamat, status p telah dikunci kepada Diselesaikan (dengan mengandaikan kejayaan tidak kira bagaimana anda memuat semula halaman itu nanti, p tetap akan menjadi p asal, dan Janji baharu tidak akan dijana semula).
Anda boleh lihat contoh ini:
var testData='testData'
var execute=0;
var testPromise = new Promise((resolve, reject) => {
execute++;
setTimeout(function () {
resolve(testData);
}, 1000);
})
testPromise.then((data) => {
console.log(1,data);
testData='newData'
})
setTimeout(function () {
testPromise.then((data) => {
console.log(2,data);
console.log('执行次数:'+execute)
})
}, 2000);
//最终输出
// 1 'testData'
// 2 'testData'
// 执行次数:1