异步 JSON.stringify

Posted

技术标签:

【中文标题】异步 JSON.stringify【英文标题】:Asynchronous JSON.stringify 【发布时间】:2014-01-21 20:49:40 【问题描述】:

如果我有:

fetched_user.settings = null;
fetched_user.settings = JSON.stringify(settings);
$http.post('/api_endpoint', 
  val: fetched_user.settings
);

JSON.stringify 需要永远执行,那么我的理解是val: fetched_user.settings 可能为空,因为这是异步执行的(异步新手检查点:这是正确的吗?)。

通常在这些情况下,我会提供一个回调函数,以便在长时间运行的任务完成时执行,但是 JSON.stringify() 不提供回调选项。

我该怎么写?

【问题讨论】:

为什么要异步?用户设置有那么大吗? 如果您希望它是异步的,请使用网络工作者或setTimeout 不,现在设置不大。但是,如果它是异步的,并且我依赖于它在很小的时候执行速度很快,那么如果它需要更长的时间来执行,那将是一个难以追踪的错误。 异步 API 通常要么有一个回调函数作为参数传递,要么返回一个 Promise。在任何一种情况下,它们都不会通过函数返回直接获得值。所以,它不会只在某些时候起作用。 【参考方案1】:

JSON.stringify 不是异步的,因此 $http.post 行在字符串化完成之前不会执行。

【讨论】:

以上是关于异步 JSON.stringify的主要内容,如果未能解决你的问题,请参考以下文章

js异步处理方案,js的异步串行与异步并行

js异步处理方案,js的异步串行与异步并行

js异步处理方案,js的异步串行与异步并行

js异步处理方案,js的异步串行与异步并行

获取 异步执行调用的结果

Async/Await 同步方法中的异步和异步方法中的异步