javascript - 无法“去同步”功能
问题描述
我创建了一个 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............
解决方案
感谢“Bergi”,他给出了答案。
问题(我问): “我的目标不是“必须使用”:setTimeOut,fetch,filopen ...经典的javascript,同步指令是否可以因为需要而变为异步...对于多任务工作我知道javascript 是一个线程只工作,但通过 usinc 异步,是否有可能找到解决方案?"
Bergi 的解决方案/回答: “不,不是。如果不实际使用异步函数,就不能使用 async/await。如果需要在后台运行同步(cpu 受限)代码,则需要一个单独的工作线程”
谢谢伯吉
推荐阅读
- android - 给定纬度和经度界限时,如何将 Google Maps API 限制在特定区域?
- bash - 命令行中的 Unix For 循环
- kubernetes - kubernetes 资源请求/限制定义可以减慢 Pod 的速度吗?
- android - 干净架构中的 Android 特定代码
- javascript - 如何通过多个属性值过滤对象数组?
- svg - 了解 SVG 图像的路径
- vba - 如何从文档中的某个点向下搜索并结束搜索?
- java - 我无法在项目内部目录中创建文件夹
- r - 有没有办法在 R 中写入文本文件时忽略“\n”?
- local-storage - 本地存储中的 Vuex 奇怪的行为