【发布时间】:2021-04-18 22:08:18
【问题描述】:
我创建了一个 javascript 函数,它人为地“需要时间”才能工作(大约 2 或 3 秒)。这只是一个很长的“for循环”。 我希望该功能不与其他功能同步。 我的意思是我希望该函数快速完成,并且在脚本末尾调用,我希望它的日志出现得太早。 我不想使用:setTimeOut、fetch、filopen...已经是“黑匣子”的承诺... 我的意思是如果需要,同步 javascript 可以变成“异步”。
请问,我该怎么办?我想我将不得不使用异步和等待。 我的目的是不要使用“承诺”声明。目的是去同步不得到任何结果值 这是代码:
var fullTime = function() {
var currentdate = new Date();
return (currentdate.getDate()+"/"+(currentdate.getMonth()+1)+"/" +
currentdate.getFullYear()+"-"+currentdate.getHours()+":"+
currentdate.getMinutes()+":"+currentdate.getSeconds());
};
var AfficherFullTime = function(argEvent) {console.log(argEvent + " " + fullTime()) ; } ;
var processTakesTime = function () {
var i = 0 ;
const max = 6000000 ;
for (i=1;i<=max;i++) {
if (i== max )
AfficherFullTime("loizAsynchrone > maximum value at ") ;
else
{
if (i == 1 )
AfficherFullTime("loizAsynchrone > maximum value at ") ;
else
fullTime();
}
}
} ;
var testNoCallBack = function() {
processTakesTime();
AfficherFullTime('first log');
};
testNoCallBack() ;
结果是:
loizAsynchrone > maximum value at........
loizAsynchrone > maximum value at............
first log ....................
应该是:
loizAsynchrone > maximum value at........
first log ....................
loizAsynchrone > maximum value at............
【问题讨论】:
-
如果你不想使用它们,为什么要标记为 [promise] 和 [async-await]?
-
"我创建了一个 javascript 函数,该函数人为地“需要时间”才能工作。这只是一个很长的“for 循环”。” - 你的问题。当您需要异步行为时,不要编写同步循环。在您的代码中使用异步函数,即
setTimeout来模拟浪费时间。 -
我的目标不是“必须使用”:setTimeOut, fetch, filopen...经典的javascript,同步指令是否可以因为需要而变为异步...对于多任务工作我知道javascript是一个线程只能工作,但是通过usinc async,是否有可能找到解决方案?
-
不,不是。如果不实际使用异步函数,就不能使用
async/await。如果您需要在后台运行同步(cpu 受限)代码,则需要一个单独的工作线程。 -
好的,我有我的答案。谢谢你:)
标签: javascript asynchronous async-await promise