首页 > 解决方案 > 如何在 .js 中延迟下一个 PHP 调用,直到之前的 PHP 调用返回答案?

问题描述

我的互联网服务提供商只是将并行 php 调用的数量减少到 10,这会杀死我的 .js

我是 .js 新手,但我一直在用朋友的复制粘贴代码设置这个网站。它对我们的小社区运作良好,直到我们的服务提供商做出改变。现在我必须修复它,我需要一些帮助。

.js 在这里:https ://snapseatlas.dk/snapseatlas070.js ,主页是:https ://snapseatlas.dk/index_hold.html

问题的关键部分是:

// ** Define some plant layers

// Slaaen
var layerSlaaen = L.geoJson(null,{
    onEachFeature: popPlantenavn,
    pointToLayer: function (feature, latlng) {return L.marker(latlng, {icon: pinSpurp});}
});
var urlbbox = 'php070/data.php?bbox='+bbox+'&species=Prunus spinosa';
$.getJSON(urlbbox, function (datab) {layerSlaaen.addData(datab)});

// Pors
var layerPors = L.geoJson(null,{
    onEachFeature: popPlantenavn,
    pointToLayer: function (feature, latlng) {return L.marker(latlng, {icon: pinPgreen});}
});
var urlbbox = 'php070/data.php?bbox='+bbox+'&species=Myrica gale';
$.getJSON(urlbbox, function (datab) {layerPors.addData(datab)});

// Ene
var layerEne = L.geoJson(null,{
    onEachFeature: popPlantenavn,
    pointToLayer: function (feature, latlng) {return L.marker(latlng, {icon: pinEblue});}
});
var urlbbox = 'php070/data.php?bbox='+bbox+'&species=Juniperus';
$.getJSON(urlbbox, function (datab) {layerEne.addData(datab)});

它继续,定义了大约 20 种植物,但我在这里只展示了 3 种。

由于代码一直在工作,直到现在,它将这 20 个 php 请求发送到 php 脚本,然后向 sql server 请求数据。当时的 10 次 php 调用的新限制导致后半部分调用返回错误。

在此处输入图像描述

如何更改此 .js 以定义所有 20 个植物并填充数据?

我最初的想法是在每次校准之间等待 1 秒。但是.js中似乎不存在wait(),它会使页面在加载时变得很慢。

我也一直在研究 Callback、Promises 和 Async/Await 结构。但我无法真正理解它们——尽管它们似乎是解决方案。

标签: javascriptasync-awaitpromisecallback

解决方案


推荐阅读