Script blocking app for some seconds ?
See original GitHub issueI’m submitting a…
[ ] Regression (a behavior that used to work and stopped working in a new release)
[x] Bug report
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
Current behavior
I have an angular which i am loading via an iframe . The angular app is hanging the whole web browser for about 3 seconds while loading .
I am loading this iframe on window.onload I am only getting this issue in chrome.
What have i debugged:
- I have seen the sources tab in devtools which show that there is one file which has no domain is causing problem which loading .
- I opened this file and the code seems like this
(function(define, require, requireNative, requireAsync, exports, console, privates, apiBridge, bindingUtil, getInternalApi,$Array, $Function, $JSON, $Object, $RegExp, $String, $Error) {'use strict';// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Custom binding for the app API.
var appNatives = requireNative('app');
var process = requireNative('process');
var extensionId = process.GetExtensionId();
var logActivity = requireNative('activityLogger');
function wrapForLogging(fun) {
if (!extensionId)
return fun; // nothing interesting to log without an extension
return function() {
// TODO(ataly): We need to make sure we use the right prototype for
// fun.apply. Array slice can either be rewritten or similarly defined.
logActivity.LogAPICall(extensionId, "app." + fun.name,
$Array.slice(arguments));
return $Function.apply(fun, this, arguments);
};
}
// This becomes chrome.app
var app = {
getIsInstalled: wrapForLogging(appNatives.GetIsInstalled),
getDetails: wrapForLogging(appNatives.GetDetails),
runningState: wrapForLogging(appNatives.GetRunningState)
};
// Tricky; "getIsInstalled" is actually exposed as the getter "isInstalled",
// but we don't have a way to express this in the schema JSON (nor is it
// worth it for this one special case).
//
// So, define it manually, and let the getIsInstalled function act as its
// documentation.
var isInstalled = wrapForLogging(appNatives.GetIsInstalled);
$Object.defineProperty(
app, 'isInstalled',
{
__proto__: null,
configurable: true,
enumerable: true,
get: function() { return isInstalled(); },
});
// Called by app_bindings.cc.
function onInstallStateResponse(state, callbackId) {
var callback = callbacks[callbackId];
delete callbacks[callbackId];
if (typeof callback == 'function') {
try {
callback(state);
} catch (e) {
console.error('Exception in chrome.app.installState response handler: ' +
e.stack);
}
}
}
// TODO(kalman): move this stuff to its own custom bindings.
var callbacks = { __proto__: null };
var nextCallbackId = 1;
function getInstallState(callback) {
var callbackId = nextCallbackId++;
callbacks[callbackId] = callback;
appNatives.GetInstallState(callbackId);
}
$Object.defineProperty(
app, 'installState',
{
__proto__: null,
configurable: true,
enumerable: true,
value: wrapForLogging(getInstallState),
writable: true,
});
exports.$set('binding', app);
exports.$set('onInstallStateResponse', onInstallStateResponse);
})
Expected behavior
Minimal reproduction of the problem with instructions
What is the motivation / use case for changing the behavior?
Environment
Angular version:
ng -v
Angular CLI: 1.6.6
Node: 9.4.0
OS: linux x64
Angular: 4.4.6
... animations, common, compiler, compiler-cli, core, forms
... http, platform-browser, platform-browser-dynamic, router
... tsc-wrapped
@angular/cdk: 2.0.0-beta.8
@angular/cli: 1.6.6
@angular/material: 2.0.0-beta.8
@angular-devkit/build-optimizer: 0.0.42
@angular-devkit/core: 0.0.29
@angular-devkit/schematics: 0.0.52
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.6
@schematics/angular: 0.1.17
typescript: 2.2.2
webpack: 3.10.0
Browser:
- [x] Chrome (desktop) version XX
- [x] Chrome (Android) version XX
- [x] Chrome (iOS) version XX
- [ ] Firefox version XX
- [ ] Safari (desktop) version XX
- [ ] Safari (iOS) version XX
- [ ] IE version XX
- [ ] Edge version XX
For Tooling issues:
- Node version: XX
- Platform:
node -v = v9.4.0
npm -v = 5.6.0
Others:
Issue Analytics
- State:
- Created 6 years ago
- Reactions:1
- Comments:15 (7 by maintainers)
Top Results From Across the Web
The 8 best apps to help you focus and block distractions in 2023
Best app blocker for scheduled system-wide blocking ... Cold Turkey Blocker is, in a word, customizable. Install this site-blocking app, and you ...
Read more >How to pause JavaScript code execution for 2 seconds
How to pause JavaScript code execution for 2 seconds - Stack Overflow. Stack Overflow for Teams – Start collaborating and sharing organizational knowledge....
Read more >App Blocks - Amazon AppStream 2.0 - AWS Documentation
The AppStream 2.0 streaming instance waits up to 90 seconds for the VHD to complete downloading before the setup script runs. If the...
Read more >Understand and resolve SQL Server blocking problems
The rest of this article is a discussion of how to use this information to identify and resolve some common blocking scenarios. This...
Read more >App startup time - Android Developers
Android vitals considers your app's startup times excessive when the app's: Cold startup takes 5 seconds or longer. Warm startup takes 2 ...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
You’re responsible for providing the minimal reproduction in bug report, rather than asking other to debug your app.
This issue has been automatically locked due to inactivity. Please file a new issue if you are encountering a similar or related problem.
Read more about our automatic conversation locking policy.
This action has been performed automatically by a bot.