我有一个数组可以在两个人之间创建一个对话,在浏览器说话和浏览器监听之间“翻转”。
简短版本,如何制作SELECT debtDinar,
creditDinar,
debtDollar,
creditDollar AS creditDollar,
companyID,
costCenter,
accountnumber,
accountName,
activityNo,
activityName,
name,
if((debtDinar-creditDinar) >= 0.000,(debtDinar-creditDinar),0.000) AS debtDinarEx,
if((debtDinar-creditDinar) >= 0.000,0.000,abs(debtDinar-creditDinar)) AS creditDinarEx,
if((debtDollar-creditDollar) >= 0.00,(debtDollar-creditDollar),0.00) AS debtDollarEx,
if((debtDollar-creditDollar) >= 0.00,0.00,abs(debtDollar-creditDollar)) AS creditDollarEx
FROM
(SELECT SUM(recordsdetails.debtor) AS debtDinar,
SUM(recordsdetails.creditor) AS creditDinar,
SUM(recordsdetails.debtDollar) AS debtorDollar,
SUM(recordsdetails.creditDollar) AS creditDollar,
companies.name AS name,
recordsdetails.companyID AS companyID,
costCenter AS costCenter,
accounts.accountnumber AS accountnumber,
accounts.accountName AS accountName,
recordsdetails.activityNo AS activityNo,
recordsdetails.activityName AS activityName
FROM (records,
accounts
JOIN (companies
LEFT JOIN recordsdetails on((recordsdetails.companyID = companies.companyID))))
WHERE left(recordsdetails.accountnumber,1)=accounts.accountnumber
AND (recordsdetails.companyID = 1)
GROUP BY accounts.accountnumber,
costCenter
ORDER BY accounts.sortorder) AS recordsdetails
队列
saySomething
长版
for(var i=0; i < speaks.length; i++) {
saySomething(speaks[i]); // saySomething should wait for the previous loop to complete
}
最初我有一个递归循环移位数组并做了与上面相同的操作,但我认为这种方式可能更容易控制队列。因此,使用jQuery deferred或Javascript Q我将如何解决这个问题?
答案 0 :(得分:0)
你没有创建一个对象队列,你只是在遮蔽相同的对象并将它再次推入到speaks数组中,所以你将在数组中多次获得对象的最后一个版本。
如果要创建异步行为,则应尝试回调而不是简单的for
循环。
最好做这样的事情:
var speak = [
{
utter: "What do they call a quarter pounder with cheese in Paris?",
speaker: true
},
{
utter: "They don't call it a quarter pounder with cheese?",
speaker: false,
time: 3
},
{
utter: "They got the metric system. They call it a Royale with cheese",
speaker: true
}
];
然后,您可以使用filter
和map
等数组方法来处理所需的数据。
最后,当应用程序中的某些内容发生时,您可以使用事件触发每个发言。