有没有人碰巧知道IF以及我如何重新调用所有的on-load事件处理程序?我正在引用一些我无法控制的.js文件,这些.js库在$(document).ready()中进行初始化,遗憾的是,它们没有提供任何简单的函数来重新初始化.
我目前正在尝试用ajax调用中的内容替换大的div块,因此我必须重新初始化外部库.因此,只需调用$(document).ready()以重新初始化一切就好了.
到目前为止,我已经在ajax调用上尝试了这个:
success: function(data) {
alert('1'); // Displays '1'
$('#content').html(data);
alert('2'); // Displays '2'
$(document).ready();
alert('3'); // Does not display
}
Run Code Online (Sandbox Code Playgroud)
呼叫$(document).ready();也很安静.JavaScript控制台显示没有错误.有谁知道这是否可能(没有修改javascript库文件)?
我们当前的网站计划是使用亚马逊的Cloudfront服务作为资产文件(如CSS,JavaScript和图像)以及任何其他静态文件的CDN.
我们目前在S3中有一个包含所有这些静态文件的存储桶.这些文件根据它们分为不同的文件夹,"脚本"是JS文件,"图像"是图像等yadda yadda yadda.
因此,我从一开始就没有意识到,一旦您将一个Bucket从S3部署到Cloudfront Distribution,那么对该存储桶的每个后续更新都不会再次部署到同一个Distribution.因此,每次进行静态文件更新时,您似乎都必须将存储桶重新部署到另一个Cloudfront实例.
这对于图像来说很好,因为我们可以轻松确保如果图像发生了变化,那么我们只需创建一个新图像.但是,对于CSS和JS来说,这很难做到.
所以,这让我想到了最佳实践问题:
我有一个Win RT应用程序,它有一个后台任务,负责调用API来检索自己更新所需的数据.但是,我遇到了一个问题; 在后台任务之外运行时,调用API的请求可以正常工作.在后台任务中,它失败了,并且还隐藏了任何可以帮助指出问题的异常.
我通过调试器跟踪此问题以跟踪问题点,并验证执行在GetAsync上停止.(我传递的URL有效,URL在不到一秒的时间内响应)
var client = new HttpClient("http://www.some-base-url.com/");
try
{
response = await client.GetAsync("valid-url");
// Never gets here
Debug.WriteLine("Done!");
}
catch (Exception exception)
{
// No exception is thrown, never gets here
Debug.WriteLine("Das Exception! " + exception);
}
Run Code Online (Sandbox Code Playgroud)
我读过的所有文档都说允许后台任务拥有所需的网络流量(当然会受到限制).所以,我不明白为什么会失败,或者知道任何其他方法来诊断问题.我错过了什么?
UPDATE/ANSWER
感谢史蒂文,他指出了解决问题的方法.在确保定义的答案就在那里,利益在这里是后台任务前和修复程序后:
之前
public void Run(IBackgroundTaskInstance taskInstance)
{
BackgroundTaskDeferral deferral = taskInstance.GetDeferral();
Update();
deferral.Complete();
}
public async void Update()
{
...
}
Run Code Online (Sandbox Code Playgroud)
后
public async void Run(IBackgroundTaskInstance taskInstance) // added 'async'
{
BackgroundTaskDeferral deferral = taskInstance.GetDeferral();
await Update(); // added …Run Code Online (Sandbox Code Playgroud) 我正在尝试移植一些创建渐变层的Objective-C代码
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = colors;
gradientLayer.locations = locations;
gradientLayer.frame = view.bounds;
[view.layer insertSublayer:gradientLayer atIndex:index];
Run Code Online (Sandbox Code Playgroud)
但是在Swift中,CAGradientLayer似乎没有静态"层"方法或构造函数.尝试将其用作类型会产生:
let a:CAGradientLayer? = null
Run Code Online (Sandbox Code Playgroud)
错误:使用模块"CAGradientLayer"作为类型
据我所知,CAGradientLayer不是我可以导入的模块.在Swift中执行渐变图层的正确方法是什么?
我一直在阅读文档,试图弄清楚如何在QLDB中提交事务,为了做到这一点,CommitDigest需要a,文档将其描述为:
指定要提交的事务的提交摘要。对于每个活动事务,必须传递提交摘要。如果客户端上计算的摘要与QLDB计算的摘要不匹配,则QLDB会验证CommitDigest并拒绝提交,并显示错误。
因此,必须计算CommitDigest,但在此示例中,我不太确定其计算需要什么:
// ** Start Session **
const startSessionResult = await qldbSession.sendCommand({
StartSession: {
LedgerName: ledgerName
}
}).promise(),
sessionToken = startSessionResult.StartSession!.SessionToken!;
// ** Start Transaction **
const startTransactionResult = await qldbSession.sendCommand({
StartTransaction: {},
SessionToken: sessionToken
}).promise(),
transactionId = startTransactionResult.StartTransaction!.TransactionId!;
// ** Insert Document **
const executeStatementResult = await qldbSession.sendCommand({
ExecuteStatement: {
TransactionId: transactionId,
Statement: `INSERT INTO sometable { 'id': 'abc123', 'userId': '123abc' }`
},
SessionToken: sessionToken
}).promise(),
documentId = getDocumentIdFromExecuteStateResult(executeStatementResult)
// ** Get Ledger Digest
const getDigestResult …Run Code Online (Sandbox Code Playgroud) 我在前几天发表的评论中对此感到悲痛,所以我想发布这个问题,试图让人们告诉我,我疯了,我会接受,或者告诉我,我可能是对的,我也很乐意接受.我也可以接受两者之间的任何事情.
假设您有一个非线程安全的对象类型,例如Dictionary<int, string>.为了论证,我知道你也可以使用ConcurrentDictionary<int, string>哪个是线程安全的,但我想谈谈在多线程环境中围绕非线程安全对象的一般做法.
请考虑以下示例:
private static readonly Dictionary<int, string> SomeDictionary = new Dictionary<int, string>();
private static readonly object LockObj = new object();
public static string GetById(int id)
{
string result;
/** Lock Bypass **/
if (SomeDictionary.TryGetValue(id, out result)
{
return result;
}
lock (LockObj)
{
if (SomeDictionary.TryGetValue(id, out result)
{
return result;
}
SomeDictionary.Add(id, result = GetSomeString());
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
锁定模式称为Double-Checked Locking,因为如果已使用该id初始化字典,则会主动绕过锁定.在锁中调用字典的"添加"方法,因为我们只想调用该方法一次,因为如果您尝试添加具有相同键的项,它将引发异常.
我的理解是,这种锁定模式基本上同步了Dictionary的处理方式,这使它成为线程安全的.但是,我得到了一些负面评论,说明它实际上是如何使其线程安全的.
所以,我的问题是,在多线程环境中非线程安全对象的锁定模式是否可以接受?如果没有,那么什么是更好的模式?(假设没有相同的C#类型是线程安全的)
我正在使用以下代码来获取自定义用户控件,从中制作位图,然后将其保存到隔离存储中以用于WP8 Live Tile.
public static void UpdateTile()
{
var frontTile = new LiveTileRegular(); // Custom Control
frontTile.Measure(new Size(173, 173));
frontTile.Arrange(new Rect(0, 0, 173, 173));
var bmp = new WriteableBitmap(173, 173);
bmp.Render(frontTile, null);
bmp.Invalidate();
const string filename = "/LiveTiles/LiveTileRegular.jpg";
using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!isf.DirectoryExists("/LiveTiles"))
{
isf.CreateDirectory("/LiveTiles");
}
using (var stream = isf.OpenFile(filename, FileMode.OpenOrCreate))
{
bmp.SaveJpeg(stream, 173, 173, 0, 100);
}
Debug.WriteLine("Image Exists: " + (isf.FileExists(filename) ? "Yes" : "No")); // Displays "Yes"
}
ShellTile.ActiveTiles.First().Update(new FlipTileData
{
Title = …Run Code Online (Sandbox Code Playgroud) c# isolatedstorage dynamic-image-generation live-tile windows-phone-8