Javascript值不会随着它所包含的变量的增加而改变

Javascript value doesn't change when the variable contained in it increases

本文关键字:包含 变量 增加 改变 Javascript      更新时间:2023-09-26

我有一个程序在node.js。它连接到提供带有数据的JSON文件的web服务,但是该文件仅显示有限数量的数据(每个请求500条记录),从请求中的index参数的值开始。"lastentry"返回当前数据页中最后一条记录的ID。Lastpage是一个布尔值,表示到达最后一页的时间。

第一个请求是这样的:http://example.com/data.json?index=0

我构建这个函数是为了获取最后一条记录的ID。它调用自己,直到lastpage为真。根据我从JSON中读取的值,索引变量随着每个请求正确地增加,但是"url"不会改变,并且始终保持为0,即使它是从索引变量构建的。为什么呢?
var lastpage = false;
var index = 0;
var url = "http://example.com/data.json?index=" + index;
function getLastEntry() {
    request(url, function (err, resp, body) {
        if (err || resp.statusCode != 200) {
            // error handling
        } else {
            var data = JSON.parse(body);
            index = data.lastentry;
            lastpage = data.lastpage;
            if (lastpage == false) {
                getLastEntry();
            }
        }
    }
}
getLastEntry();

这不是JavaScript的工作方式。一旦你初始化了变量"url",初始化表达式就不会再被计算了。然而,你可以在每次调用"request"时安排它发生,只需将计算移到那里:

var url = "http://example.com/data.json?index=";
function getLastEntry() {
    request(url + index, function (err, resp, body) {