要求已经改变,我可以完全重构一大堆代码,或者弄清楚如何在ini_set('display_errors', 'On');
error_reporting(E_ALL);
$configfile = "config.php";
require $configfile;
$db = mysqli_connect("$host", "$username", "$password") or die ("could not connect to mysql");
mysqli_select_db($db, "$databasename") or die ("no database");
mysqli_query($db, "SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
function mysqli_result($db,$row=0,$col=0){
$numrows = mysqli_num_rows($db);
if ($numrows && $row <= ($numrows-1) && $row >=0){
mysqli_data_seek($db,$row);
$resrow = (is_numeric($col)) ? mysqli_fetch_row($db) : mysqli_fetch_assoc($db);
if (isset($resrow[$col])){
return $resrow[$col];
}
}
return false;
}
$word = "";
var_dump($_GET);
var_dump(isset($word));
if($word)
{
$getWord=mysqli_query($db, "SELECT word,definition FROM mdglossary WHERE word LIKE '$word' ORDER BY word");
}
else {....}
if($getWordArray=mysqli_fetch_array($getWord, MYSQLI_BOTH))
{
do
{
echo "....";
}
while($getWordArray=mysqli_fetch_array($getWord));
}
else {....}
承诺中序列化一些函数。
$q.all
我想知道是否有办法按顺序调用var serverCalls = [];
_.each(items, function(item) {
serverCalls.push(processItem(item));
});
return $q.all(serverCalls);
中的函数而不是并行调用,而不必大规模重构将所有函数放在一起的代码。
答案 0 :(得分:2)
如果您需要按顺序运行它们,则需要确保堆叠所有结果的数组,以便外部世界仍然获得通常从{{1返回的结果数组}}:
$q.all
很难解释那些不知道Promise如何运作的人会发生什么,但我会尽我所能。对于下面的每个代码示例,请尝试将其复制并粘贴到控制台。随意玩吧!!
var serverCalls = Promise.resolve();
var results = [];
_.each(items, function(item) {
// remember, .then() returns a new promise
serverCalls = serverCalls.then(function() {
return processItem(item).then(function(result) {
results.push(result)
});
});
});
return serverCalls.then(function () {
return results;
});
只创建一个已解析的Promise(可选择带有值)。这是启动承诺链的简单方法:
Promise.resolve()
在var foo = Promise.resolve(1234);
foo.then(function (result) {
console.log(result); //-> 1234
});
函数中,您可以返回一个新值。新值将用于后续调用then()
:
then()
如果您返回一个新的Promise,那么promise链将等待该promise的解析。这是关于承诺IMO最酷的部分。将此代码复制到您的控制台,并注意1000ms后如何打印每个结果。您可以将超时视为AJAX请求:
var foo = Promise.resolve(1234);
foo.then(function (result) {
console.log(result); //-> 1234
return 5678;
}).then(function (result) {
console.log(result); //-> 5678
return "BLAGH";
}).then(function (result) {
console.log(result); //-> BLAGH
// do not return anything
}).then(function (result) {
console.log(result); //-> undefined
});