小编use*_*875的帖子

有什么方法可以同步解决承诺吗?(或者可以的替代库)

我有一个用于验证字符串的方法,我希望该方法返回一个 Promise,因为正在运行的验证可能是异步的。然而,我遇到的问题是性能之一,我希望承诺尽可能在同一个事件循环中解决(例如:当没有异步验证需要完成时),但我希望接口保持一致(例如:始终返回一个 Promise)。

下面的简化代码示例说明了我正在尝试执行的操作,但它会导致上述性能损失,因为即使可以同步执行验证,它仍然会等待下一个事件循环来处理结果。

在我的具体用例中,这种性能损失太高了。

下面是我正在做的事情的简化(最小)示例

// Array containing validation methods
const validations = [
  (value) => true, // Some validation would happen here
];
// Array containing asynchronous validation methods
const asyncValidations = []; // No async validations (but there could be)
const validate(value){
  // Run synchronous validations
  try {
    validations.forEach(validation => validation(value));
  catch(error){
    // Synchronous validation failed
    return Promise.reject();
  }
  if(asyncValidations){
    return Promise.all(asyncValidations.map(validation => validation(value));
  }
  // Otherwise return a resolved promise (to provide a consistent …
Run Code Online (Sandbox Code Playgroud)

javascript promise ecmascript-6 es6-promise

4
推荐指数
1
解决办法
4267
查看次数

标签 统计

ecmascript-6 ×1

es6-promise ×1

javascript ×1

promise ×1