小编Kai*_*aja的帖子

如何同步确定JavaScript Promise的状态?

我有一个纯JavaScript承诺(内置实现或poly-fill):

var promise = new Promise(function (resolve, reject) { /* ... */ });

根据规范,Promise可以是以下之一:

  • '已定居'和'已解决'
  • '已定居'和'被拒绝'
  • "待定"

我有一个用例,我希望同步询问Promise并确定:

  • 承诺落户了吗?

  • 如果是这样,Promise是否已解决?

我知道我可以#then()用来安排Promise更改状态后异步执行的工作.我不是问怎么做.

这个问题具体是关于Promise状态的同步审讯.我怎样才能做到这一点?

javascript promise es6-promise

132
推荐指数
11
解决办法
4万
查看次数

检测服务工作者中脱机状态的最佳实践

我有一个服务工作者,offline.html如果客户端没有网络连接,它应该缓存显示的页面.但是,它有时会认为导航器即使不是离线也是脱机的.就是这样navigator.onLine === false.这意味着offline.html即使在线,用户也可以获得而不是实际内容,这显然是我想避免的.

这是我在我的注册服务工作者的方式main.js:

// Install service worker for offline use and caching
if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/service-worker.js', {scope: '/'});
}
Run Code Online (Sandbox Code Playgroud)

我目前service-worker.js:

const OFFLINE_URL = '/mysite/offline';
const CACHE_NAME = 'mysite-static-v1';

self.addEventListener('install', (event) => {
  event.waitUntil(
    // Cache the offline page when installing the service worker
    fetch(OFFLINE_URL, { credentials: 'include' }).then(response =>
      caches.open(CACHE_NAME).then(cache => cache.put(OFFLINE_URL, response)),
    ),
  );
});

self.addEventListener('fetch', (event) => {
  const requestURL = new URL(event.request.url);

  if (requestURL.origin …
Run Code Online (Sandbox Code Playgroud)

javascript offline service-worker progressive-web-apps

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

如何在多行上均匀平衡文本?

我想显示一小段文字,可以包裹两三行.它是一个高度可视化的元素,为了造型目的,我希望线条的长度尽可能相等,更喜欢一条线而不是两条线.

而不是这个:

这是一个将包装为两个文本的示例

线.

我要这个:

这是一块的例子

将包装为两行的文本.

但我不想限制文本容器的宽度:

这篇文章足够长,几乎不适合两行.它

不应该包裹三行或更多行,因此没有宽度限制.

有没有办法在纯CSS或可容忍的JavaScript中执行此操作?

html javascript css

13
推荐指数
1
解决办法
3019
查看次数

使用SCSS命名CSS网格线

我在实验新的CSS网格布局系统codepen.io.它有一个名为网格线的有趣功能,允许为列和行之间的网格线定义自定义名称.不幸的是,我似乎无法使该功能起作用,因为SCSS不赞同[line-name]语法.

#container.named {
  grid-template-columns: [main-start] 100px [content-start] 1fr [content-end] 100px [main-end]; // Will not pass SCSS validation :(

  .one {
    grid-column: content-start / content-end;
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码应该创建一个CSS网格,其两侧有两个100px宽的列​​,其中一列填充了中心元素宽度的其余部分.这部分工作正常.然后我尝试给网格线自定义名称并将.one元素放在中间列,但Codepen的SCSS预处理器(以及我尝试的所有其他编译器)拒绝编译整个事情,说Invalid CSS after "...plate-columns: ": expected expression (e.g. 1px, bold), was "[main-start] 10..."

有没有办法迫使SCSS按原样编译这个样式而不解析它(或用另一种编译方式表达)或者我是否必须用常规CSS重写我的实验?

css sass css-grid

12
推荐指数
1
解决办法
1388
查看次数

在Symfony2中非破坏性地删除实体

在Symfony 2中是否有一种非常好,干净且简单的方法来非破坏性地删除实体?我想让我的管理员有机会取消删除项目,同时尽可能少地牺牲框架提供的自动化.

如果没有内置解决方案或第三方软件包来帮助我,那么最好的方法是什么?向deleted实体添加属性需要大量添加逻辑,以防止它们混乱创建的控制器doctrine:generate:crud,所以它们可能应该以序列化形式存储在单独的表中?

orm symfony doctrine-orm

11
推荐指数
1
解决办法
5690
查看次数

如果文件丢失,如何使Gulp.src失败?

我们的gulp构建需要使用bower安装一堆库,然后将它们与我们分布在多个目录中的所有代码连接起来.这是它的样子:

  var jsFiles = [
    sourcePath + '/config/config.js',
    sourcePath + '/vendor/jquery/dist/jquery.js',
    sourcePath + '/vendor/js-cookie/src/js.cookie.js',
    sourcePath + '/vendor/modernizr/modernizr.js',
    sourcePath + '/vendor/lodash/lodash.js',
    sourcePath + '/vendor/picturefill/dist/picturefill.min.js',
    sourcePath + '/templates/**/*.js',
    sourcePath + '/pages/**/*.js'
  ],

gulp.task('build:js', ['jscs'], function() {
  return gulp.src(jsFiles)
  .pipe(concat('scripts.js'))
  .pipe(gulpif(isProd, uglify()))
  .pipe(gulp.dest(outputPath + '/webresources/js'));
});
Run Code Online (Sandbox Code Playgroud)

我们的问题是,每当有人添加新库时,如果其他开发人员没有运行bower install以获取新组件,则会遇到问题.该scripts.js地没有他们建,因为它不会介意的水珠之一返回空,即使它是一个命名的文件.

该如何解决?如果glob返回零结果,有没有办法抛出错误?

javascript bower gulp node-glob

11
推荐指数
1
解决办法
2910
查看次数

如何找出IE10上导致AppCache致命错误的原因?

我正在尝试为一个非常大(约2千兆字节)的Web应用程序创建一个HTML5应用程序缓存,该应用程序将在Windows 8 Professional平板电脑和IE10内部使用.有些事情导致缓存过程失败,但我能找到的唯一调试信息是F12控制台,它只是说"AppCache致命错误".

我做了一个错误处理程序并尝试调试:

if (window.applicationCache)
{
    var oAppCache = window.applicationCache;
    oAppCache.onerror = function(e) {
      alert(e); // Outputs [object Event], I use this row as a breakpoint target
    };
}
Run Code Online (Sandbox Code Playgroud)

但是,e使用调试器查看时,不包含任何有用的信息.

根据Web服务器日志,错误之前请求的最后一个文件是JPEG,就像许多其他文件一样.我应该从哪里开始寻找导致错误的原因的线索?该页面缓存在Firefox上很好.

debugging internet-explorer-10 html5-appcache

9
推荐指数
2
解决办法
7462
查看次数

HTML安全包装长行

我在发送带有长行文本的HTML电子邮件时遇到问题.网站上使用的WYSIWYG编辑器(FCKEditor 2.5)不断删除\n某些浏览器上的所有字符,包括IE和Chrome.结果是一封包含大量文本的电子邮件.如果不是电子邮件客户端通过插入包装超过998个字符的行,这不会是一个问题! \n.当然,这些几乎总是在最不幸的地方,打破HTML标签,并在内容本身看起来讨厌.

我最初的解决方案是在每个HTML标记后或每900到990个字符后添加换行符.这是我最终得到的正则表达式:

 return preg_replace("/(<\/[^\>]+>|<[^\>]+\/>|>[^<]{900,990}\s)(\n)*/","$1\n",$str);
Run Code Online (Sandbox Code Playgroud)

但是,当存在根本不包含任何标记的行时,永远不会触发空白匹配部分.但是,如果我>从它开始删除它,它会开始打破标签.

有没有比正则表达式更好的方法来做到这一点,或者这个正则表达式能够愈合吗?

编辑: 1000字符行长度限制在RFC 821中定义.

php regex email

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

无法在Symfony2中启用SoftDeleteable - 无法识别的选项"过滤器"

我在尝试激活StofDoctrineExtensionsBundle中的SoftDeleteable过滤器时遇到问题.我按照手册中的描述进行了配置:

# app/config/config.yml
doctrine:
    orm:
        entity_managers:
            default:
                filters:
                    softdeleteable:
                        class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
                        enabled: true
Run Code Online (Sandbox Code Playgroud)

但这就是我得到的:

[Symfony\Component\Config\Definition\Exception\InvalidConfigurationException]
Unrecognized options "filters" under "doctrine.orm.entity_managers.default"
Run Code Online (Sandbox Code Playgroud)

跑步bin/vendors update没有帮助.可能有什么不对?

symfony doctrine-orm

5
推荐指数
1
解决办法
2009
查看次数

Symfony 2:使用两个独立的提供者访问防火墙路线

我们有一个系统,管理员和标准用户由他们自己独立的安全提供商处理.这导致管理页面出现问题,因为管理员无法访问主站点防火墙后面的任何文件或图像,除非他们也登录到主站点.

无论提供商如何,所有经过身份验证的用户和管理员都需要可以访问这些图像和文件.它们通过控制器提供,该控制器提供更细粒度的访问控制.

是否可以定义多个提供商以允许访问路由?

这是我们当前security.yml的精简版:

security:
    providers:
        admin_user_db:
            entity: { class: OurAdminUserBundle:AdminUser, property: username }
        site_user_db:
            entity: { class: OurSiteUserBundle:SiteUser, property: username }
    firewalls:
        admin_login:
            pattern:  ^/admin/login$
            security: false
        site_user_login:
            pattern: ^/login
            security: false
        file_route:
            pattern: ^/file
            anonymous: ~
            ### We need to allow this route only for authorized users from
            ### either admin_user_db or site_user_db providers
        admin_secured_area:
            pattern: ^/admin
            http_basic: ~
            provider: admin_user_db
            form_login:
                check_path: /admin/login_check
                login_path: /admin/login
            logout:
                path:   /admin/logout
                target: /
        site_secured_area:
            pattern: .*
            http_basic: ~
            provider: site_user_db …
Run Code Online (Sandbox Code Playgroud)

url-routing symfony

5
推荐指数
1
解决办法
3784
查看次数

在HTML模板中使用CSS选择器

在HTML模板中意外使用CSS选择器之后,我开始想知道是否存在允许这种语法的模板语言或扩展名,以及它是否有用.所以不要写这个:

<div id="mydiv">
  <div class="first column">1</div>
  <div class="second column">2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我们可以这样写:

<div#mydiv>
  <div.first.column>1</div>
  <div.second.column>2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

这样的事情存在吗?

html css template-engine

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

MBR内部不准确的mysql

我一直在使用MBRWithin功能很多次.突然我注意到谷歌地图这POINT(101.11857 4.34475)是我指定的地理围栏,但它仍然在mysql中给出值1任何原因或需要调整?

SELECT MBRWithin(GeomFromText('POINT(101.11857 4.34475)'),GeomFromText('POLYGON((101.12112522125244 4.3531723687957164,101.11846446990967 4.351417913665312,101.13138198852539 4.336397898951581,101.13477230072021 4.33211863778494,101.14065170288086 4.321933898868271,101.14992141723633 4.306699328215635,101.15455627441406 4.30978050198082,101.1397933959961 4.334600612212089,101.12112522125244 4.3531723687957164,101.12112522125244 4.3531723687957164))')) As geoFenceStatus

mysql geospatial

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

无法在Symfony2中调用自定义存储库功能

我们在Symfony2项目中从控制器调用某个自定义实体存储库函数时遇到问题.我们之前已经成功地与其他实体一起完成了它,所以我们可能会遗漏一些东西而且我无法弄清楚它可能是什么.

我们的存储库类如下所示:

<?php

namespace OurSite\Bundle\OurBundle\Entity;
use Doctrine\ORM\EntityRepository;

class BlogRepository extends EntityRepository
{
    public function findPreviousPosts($limit = 6)
    {

        $q = $this->createQueryBuilder('q')
            ->where('q.category = :category')            
            ->setMaxResults($limit)                                                           
            ->add('orderBy', 'q.published ASC')
            ->getQuery();
        $res = $q->getResult();
        return $res;
    }
}
Run Code Online (Sandbox Code Playgroud)

实体:

<?php

namespace OurSite\Bundle\OurBundle\Entity;

use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;

/**
* OurSite\Bundle\OurBundle\Entity\Blog
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="OurSite\Bundle\OurBundle\Entity\BlogRepository")
*/
class Blog {
    // Non-relevant stuff here
}
Run Code Online (Sandbox Code Playgroud)

当我们调用这样的方法时:

$em = $this->getDoctrine()->getEntityManager();
$previousPosts = $em->getRepository('OurSiteOurBundle:Blog')->findPreviousPosts();
Run Code Online (Sandbox Code Playgroud)

我们得到这个:

Undefined method 'findPreviousPosts'. The method name must …
Run Code Online (Sandbox Code Playgroud)

php orm symfony

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