异步 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的主要内容,如果未能解决你的问题,请参考以下文章