小编Roa*_*888的帖子

更新到Symfony 2.6后,必须定义参数"debug.error_handler.throw_at"错误

使用Composer将Symfony更新到2.6版后,它会出现以下错误:

[Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]必须定义参数"debug.error_handler.throw_at".

symfony

60
推荐指数
1
解决办法
1万
查看次数

在javascript中递归建立一个promise链 - 内存考虑因素

这个答案中,一个承诺链是递归建立的.

稍微简化,我们有:

function foo() {
    function doo() {
        // always return a promise
        if (/* more to do */) {
            return doSomethingAsync().then(doo);
        } else {
            return Promise.resolve();
        }
    }
    return doo(); // returns a promise
}
Run Code Online (Sandbox Code Playgroud)

据推测,这会产生一个调用堆栈一个承诺链 - 即"深"和"宽".

我预计内存峰值会大于执行递归或单独建立一个promise链.

  • 是这样吗?
  • 有没有人考虑过以这种方式建立连锁店的记忆问题?
  • 承诺库之间的内存消耗会有所不同吗?

javascript recursion promise

55
推荐指数
3
解决办法
1万
查看次数

如何推迟内联Javascript?

我有以下HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/blazy/1.8.2/blazy.min.js" defer></script>
    <script src="https://code.jquery.com/jquery-2.1.4.min.js" integrity="sha256-8WqyJLuWKRBVhxXIL1jBDD7SDxU936oZkCnxQbWwJVw=" crossorigin="anonymous" defer></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.9.0/js/lightbox.min.js" defer></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous" defer></script>
    <!-- 26 dec flexslider js -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/flexslider/2.6.3/jquery.flexslider.min.js" defer></script>
    <script defer>
    (function($) {
        $(document).ready(function() {
            //do something with b-lazy plugin, lightbox plugin and then with flexslider
        });
    })(jQuery);
    </script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,说没有定义jQuery.现在,即使我从我的内联JS代码中删除defer,它也说jQuery是未定义的.出于某种原因,我必须将jQuery插件保留在头部并保持我的JS代码内联.我的问题是:

  1. 为什么内联Javascript代码在defer属性存在时不会延迟?

  2. 有没有办法模仿我的内联Javascript代码的延迟行为?如果需要,我可以将它放在body标签的末尾.

html javascript jquery deferred-execution

44
推荐指数
5
解决办法
3万
查看次数

我可以通过bluebird在节点全局范围内的实现来覆盖ES6的Promise吗?

我想使用bluebird实现Promise/A +开放标准并覆盖原生ES6 Promises.我还希望bluebird实现在我随后导入的模块中随处可用,而不必在每个模块中都需要它.Bluebird的入门页面告诉我:

var Promise = require("bluebird");
Run Code Online (Sandbox Code Playgroud)

,这会导致覆盖本机Promise元素.因为bluebird是规范的超集,所以它不会破坏现有代码,因此应该是安全的.

但是,因为我知道这被认为是不好的做法:

  1. 扩展或替换语言本地人,和
  2. 定义全局变量以在依赖于它的需求链中使用

当我想在节点应用程序的基本脚本中包含它时,我很谨慎:

import Promise from 'bluebird';
global.Promise = Promise;
Run Code Online (Sandbox Code Playgroud)

这是一种不好的做法吗?我应该坚持在每个文件中导入bluebird吗?

javascript overriding node.js promise bluebird

21
推荐指数
1
解决办法
5028
查看次数

requestAnimationFrame何时执行?

浏览器读取并运行JavaScript文件,文件中写入的同步任务立即变为执行中任务,setTimeout回调变为macrotasks,并且promise回调变为微任务.一切都是好的.

在我见面之前,我以为我掌握了JavaScript事件循环requestAnimationFrame.

@TJ Crowder为我提供了以下代码片段.

const messages = [];
setTimeout(() => {
  // Schedule a microtask
  Promise.resolve().then(() => {
    log("microtask");
  });
  
  // Schedule animation frame callback
  requestAnimationFrame(() => {
    log("requestAnimationFrame");
  });
  
  // Schedule a macrotask
  setTimeout(() => {
    log("macrotask");
  }, 0);
  
  // Schedule a callback to dump the messages
  setTimeout(() => {
    messages.forEach(msg => {
      console.log(msg);
    });
  }, 200);

  // Busy-wait for a 10th of a second; the browser will be eager to repaint when this task completes
  const …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous javascript-events promise requestanimationframe

10
推荐指数
1
解决办法
2398
查看次数

用正斜杠(/)替换反斜杠(\)

我需要替换这条路径:C:\test1\test2 进入: C:/test1/test2

我正在使用jquery但它似乎不起作用

var path = "C:\test1\test2";
var path2 = path.replace("\", "//");
Run Code Online (Sandbox Code Playgroud)

应该怎么做?

javascript regex

7
推荐指数
1
解决办法
2万
查看次数

什么时候使用 await async 不好?

我有一个使用 C# 编写的基于 ASP.NET Core 3.1 的项目。我知道,最好的时间来使用awaitasync访问外部资源时,就像是从数据库中提取数据,访问文件或发送HTTP请求。这释放了线程,因此完成了更多的工作,而不是让线程坐在那里等待代码完成。

但是,我想弄清楚在什么时候使用async/await会损害性能?await调用时释放线程和任务完成时检索线程的过程是否有成本?

接下来找到的代码被异步调用。实际上,该代码不需要异步调用,因为所有代码都在内存中执行并且没有发出外部请求。

public interface ILocator
{
    Task<Model> ExampleAsync();
}

public class Example : Controller
{
    public ILocator Locator { get; set; }

    public Example(ILocator locator)
    {
        Locator = locator;
    }

    public async Task<IActionResult> Example()
    {
        Model model = await Locator.ExampleAsync();

        return View(model);
    }
}

public class Locator : ILocator
{
    pubilc Task ExampleAsync()
    {
        Example model = new Example();
        model.Status = "New";

        return Task.CompletedTask;
    } …
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous promise async-await

7
推荐指数
2
解决办法
372
查看次数

转换AWS Lambda函数以使用promises?

我正在编写一个简单的HTTP"ping"函数,该函数使用AWS Lambda定期执行.它使用四个异步函数:http.get,S3.getObject,S3.putObject和nodemailer.sendMail.每个似乎都有一个稍微不同的回调模型.

在阅读了承诺后,我花了太多时间尝试将以下代码转换为使用Q承诺并且失败了.

对于我自己的教育和希望其他人的教育,我希望有人可以帮助我将其转换为使用承诺(不一定是Q):

'use strict';

var http = require('http');
var nodemailer = require('nodemailer');
var AWS = require('aws-sdk');
var s3 = new AWS.S3( { params: { Bucket: 'my-bucket' } } );

exports.handler = (event, context, callback) => {
  var lastStatus;

  var options = {
    host: event.server.host,
    port: event.server.port ? event.server.port : 80,
    path: event.server.path ? event.server.path : '',
    method: event.server.method ? event.server.method : 'HEAD',
    timeout: 5000
  };
  var transporter = nodemailer.createTransport({
    host: event.mail.host,
    port: event.mail.port ? event.mail.port : 587,
    auth: …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 node.js promise aws-lambda

6
推荐指数
3
解决办法
1万
查看次数

使用纯javascript正确地将defer属性添加到脚本标记

所以我尝试添加这样的延迟脚本标签

const script = document.createElement('script');
  script.setAttribute('src', '/script.js');
  script.setAttribute('type', 'text/javascript');
  script.setAttribute('defer', true);//this is the code in question!
  document.getElementsByTagName('body')[0].appendChild(script);
Run Code Online (Sandbox Code Playgroud)

但是我发现结果脚本标签会生成defer属性,defer=true而不仅仅是defer.

它们是一样的吗?什么是暗示,如果我做的defer=true,而不是defer

谢谢!

javascript script-tag setattribute deferred-loading

6
推荐指数
1
解决办法
5697
查看次数

检测悬空承诺的静态/动态方法

我知道这个问题已经被处理 很多次了,但它们似乎都没有解决可靠地检测悬空承诺的问题(即使是那些正确解决的承诺)。

所以我希望能够找到一种方法(无论是在运行时还是在静态时更好)来根除“悬而未决的承诺”,尤其是此类:

async function a() {
    ... do some async operation ...
}
async function b() {
    a(); // forgot to call await on it
}
Run Code Online (Sandbox Code Playgroud)

我不小心忘记等待一个函数,并且某些异步执行的任务没有等待。通常,这些类型的错误不会引发异常,因此我不能只使用“unhandledRejection”并就此结束。

此时,经过多次绝望的尝试,我只需要一种方法来在(最佳)静态/编译/lint 时间或运行时检测这种错误模式。对我来说,运行时我认为假设我有良好的测试覆盖率应该可以工作。

tl;dr 基本上,我正在寻找一些可以执行以下操作的代码:

Error: Potential dangling promise detected!
    ...
    at b (/dangling.js:5:3)
Run Code Online (Sandbox Code Playgroud)

对于每一个悬而未决的承诺

我的思考过程

我首先尝试寻找一些静态分析库来帮助检测这些东西(理论上它应该是可能的,但我没有找到这样的东西)。不久前,我记得在 stackoverflow 的深处找到了一些东西,其中谈到使用一些打字稿检查器来检查悬空的承诺,尽管现在我再也找不到它了:(。尽管当时将整个代码库更改为打字稿是不行的-go.(后来我了解到你实际上可以使用 tsc 来检查 javascript (假设你在注释中做了一些类型注释))

目前我之前使用的是node版本11,所以我考虑使用node.js的async_hooks API并尝试监听事件(显然简单地猴子修补Promise构造函数是行不通的,因为node.js在创建Promise时绕过了Promise构造函数从异步函数返回的对象)。使用 Node v11,经过一些代码黑客攻击后,它似乎可以工作(虽然它不是很有效,因为它在 v8 引擎中丢弃了很多承诺优化,但它确实完成了工作)。整个操作中出现了一个小问题,因为我仍然必须对 Promise API 的 then/catch/finally 函数进行猴子修补,以检查我们当前是否正在调用该函数(以某种方式可以检测一些悬空的 Promise)。

现在输入节点 v12(显然我需要这个来处理某些其他正在破坏的事情),现在黑客(毫不奇怪)完全破坏了。在仔细检查版本差异后,似乎他们优化了等待/异步实现。缩小原因后,await 似乎不再调用thenPromise …

javascript node.js promise

6
推荐指数
1
解决办法
1132
查看次数